Java 简单计时器

代码

package com.benywave;

import java.util.Timer;
import java.util.TimerTask;

public class TimerTest {

    private  Timer timer;

    private long elapsedSeconds;

    public TimerTest() {
        timer = new Timer();
    }

    public static void main(String[] args) {
        //System.out.println(formatElapsedTime(3661));
        new TimerTest().startClock();
    }

    /**
     * 开始粗略计时
     */
    private void startClock(){
        elapsedSeconds = 0;
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println(formatElapsedTime(elapsedSeconds));
                elapsedSeconds += 1;
            }
        },0,999);
    }

    private void stopClock(){
        if(timer != null){
            timer.cancel();
            timer.purge();
        }
    }

    /**
     * 格式化输出时间字符串
     * @param elapsedSeconds
     * @return
     */
    public static String formatElapsedTime(long elapsedSeconds){
        long hours = 0;
        long minutes = 0;
        long seconds = 0;
        if(elapsedSeconds >= 3600){
            hours = elapsedSeconds / 3600;
            elapsedSeconds -= hours * 3600;
        }
        if(elapsedSeconds >= 60){
            minutes = elapsedSeconds / 60;
            elapsedSeconds -= minutes * 60;
        }
        seconds = elapsedSeconds;
        StringBuilder sb = new StringBuilder();
        sb.append(addZeroBeforeNumber(hours));
        sb.append(":");
        sb.append(addZeroBeforeNumber(minutes));
        sb.append(":");
        sb.append(addZeroBeforeNumber(seconds));
        return sb.toString();
    }

    /**
     * 加0处理,不足两位时补0
     * @param number
     * @return
     */
    public static String addZeroBeforeNumber(long number){
        StringBuilder sb = new StringBuilder();
        if(number >= 0 && number <= 9){
            return sb.append("0").append(number).toString();
        }
        return sb.append(number).toString();
    }
}

控制台输出

这种方式,只是粗略计时,不适合精确计时的场景。

虽然写了停止计时器的方法,但并未调用,所以启动计时后不会停止。

只是作为练习demo, 仅供参考。

时间: 2024-08-01 08:29:46

Java 简单计时器的相关文章

zoj Fibonacci Numbers ( java , 简单 ,大数)

题目 //f(1) = 1, f(2) = 1, f(n > 2) = f(n - 1) + f(n - 2) import java.io.*; import java.util.*; import java.math.*; public class Main { /** * @xqq */ public BigInteger an(int n) { BigInteger c; BigInteger a = BigInteger.valueOf(1); BigInteger b = BigIn

rabbitmq的java简单实现

1,安装rabbitmq.我的是ubuntu14.04,在官网上面下载最新的安装文件http://www.rabbitmq.com/install-debian.html 2.安装完之后  启动rabbitmq, sudo rabbitmq-server 3.下载jar包 4.最简单的hello world的实现 Sender类 package com.lubby.test; import java.io.IOException; import com.rabbitmq.client.Chann

Java简单聊天室

实现Java简单的聊天室 所用主要知识:多线程+网络编程 效果如下图 /** * * @author Administrator * * 简单的多人聊天系统——重点:同时性,异步性 * 1.客户端:发送消息,并且接收消息 * 1.1 消息发送至服务器:服务器每次都将客户发过来的信息发送到每个客户端 * 1.2 接收消息:发送的同时也要接收消息,所以必须有两个线程,一个发送消息,一个接收消息 * 1.3 关于这两个线程:如果没有线程,接收和发送就是按顺序执行的了,那么是发送后接收还是接收后发送?或

HDU 1715 大菲波数(JAVA, 简单题,大数)

题目 //BigInteger 和 BigDecimal 是在java.math包中已有的类,前者表示整数,后者表示浮点数 import java.io.*; import java.util.*; import java.math.*; public class Main { /** * @xqq */ public BigInteger an(BigInteger a, BigInteger b, int n) { if(n == 1) { return a; } for(int i = 2

Java简单语法与访问权限修饰符

Java简单语法总结 一:Java简单语法概述 1:分号,关键字,空白(空格,空白行),花括号和注释的使用. 2:标识符的规则(命名规则与业内约定). 3:Java表达式(逗号,问号和逻辑表达式). 二:分号,关键字,空白(空格,空白行),花括号和注释的使用 1:分号  在Java中通常用来分隔语句,即作为分隔符,另外它也是一个语句结束的标志. 2:关键字 通俗的理解,在编译器Eclipse中像"public","class"这些输入的时候就带有颜色的字成为关键字,

POJ 3982 序列(JAVA,简单,大数)

题目 //在主类中 main 方法必须是 public static void 的,在 main 中调用非static类时会有警告信息, //可以先建立对象,然后通过对象调用方法: import java.io.*; import java.util.*; import java.math.*; public class Main { /** * @xqq */ public BigInteger a99(BigInteger a, BigInteger b, BigInteger c) { f

JAVA简单Swing图形界面应用示例

package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗口 * @author lenovo * */ public class HelloSwing { public static void main(String[] args) { JFrame frame=new JFrame("hello Swing"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLO

RPC学习----Thrift快速入门和Java简单示例

一.什么是RPC? RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据.在OSI网络通信模型中,RPC跨越了传输层和应用层.RPC使得开发包括网络分布式多程序在内的应用程序更加容易. 二.什么是Thrift? thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和

java 简单加密

* 所有的加密技术的基本操作都是用encrypt()和decrypt()方法对消息 * 进行分解和组合,其中消息是用空格分隔的字符串,除了encrypt()和decrypt() * 外每个加密类还需要encode()和decode()方法对每一个单词按照特定的算法 * 规则进行编码,.例如Caesar Cipher 和 Transpose Clipher * 按照设想由于加密都有相同的方法,因此首先定义一个通用的类Cipher类 * 封装公用的方法. package Case.Encryptio