自写时间小工具类

  有时候需要用到计算程序运行的时间,每次都是直接用System.currentTimeMillis()或者另外一个纳秒的.觉得比较麻烦,就写了一个简单的工具,大神勿喷,有好的建议欢迎留言. 

旧版本的代码,存在很多不足.

package com.wk.mothod;

public class MyTimeUtil {

    private long time=0;
    public  void start() {
        time=System.currentTimeMillis();
    }
    public void end(){
        time=System.currentTimeMillis()-time;
    }
    public long endAndGet(){
        time=System.currentTimeMillis()-time;
        return time;
    }
    public long getTime(){
        return time;
    }
    public void disp() {
        System.out.println("The total time is:"+time+"ms");
    }
    public void endAndDisp() {
        time=System.currentTimeMillis()-time;
        System.out.println("The total time is:"+time+"ms");
    }
}
View Code 

优化了下,简单添加了一些锁.不会造成一些重复操作,也有一个实际使用的例子.

package com.wk.mothod;

public class MyTimeUtil {

    private long time=0;
    private boolean stag=false,etag=false;
    private int tag=0;
    public  void start() {
        if(stag==false){
            time=System.currentTimeMillis();
            stag=true;
        }else{
            System.out.println("Start failed! Time has started!");
        }
    }
    public  void reStart() {
        if(stag==true){
            time=System.currentTimeMillis();
        }else{
            System.out.println("ReStart failed! Time hasn't started!");
        }
    }
    public long end(){
        if(etag==false&&stag==true){
            time=System.currentTimeMillis()-time;
            etag=true;
            stag=false;
        }else{
            System.out.println("End failed! Time hasn't started or alread stop!");
        }
        return time;
    }
    public long getTime(){
        long t=0;
        if(stag==true){
            return System.currentTimeMillis()-time;//wkupdate 20170725 get time whenever
        }else{
            System.out.println("Time hasn't started!");
            return 0;
        }
        //        return time;
    }
    public void disp() {
        if(etag==true){
        System.out.println("The total time is:"+time+"ms!");
        }else{
            System.out.println("Time haven't end");
            
        }
    }
    public void endAndDisp() {
        if(etag==false&&stag==true){
            time=System.currentTimeMillis()-time;
            System.out.println("The total time is:"+time+"ms!");
            etag=true;
            stag=false;
        }else{
            System.out.println("End failed! Time hasn't started or alread stop!");
        }
    }
    
    
    public static  void main(String [] args){
        MyTimeUtil mt=new MyTimeUtil();
        mt.reStart();//test for lock.
        mt.start();
        mt.start();//test for lock.
        mt.reStart();//test for lock.
        for(long i=0;i<(1<<24);i++){
            if(i%(1<<21)==0){
                System.out.println(mt.getTime());// get real time everytime.
            }
            if(i%(1<<23)==0){
                mt.disp(); //add to test for lock.
            }
        }
        mt.end();
        mt.end();//test for lock.
        mt.endAndDisp();//test for lock.
        mt.disp();
    }
}

 

posted @ 2017-07-18 10:38  王坤1993  阅读(330)  评论(8编辑  收藏  举报