<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    上善若水
    In general the OO style is to use a lot of little objects with a lot of little methods that give us a lot of plug points for overriding and variation. To do is to be -Nietzsche, To bei is to do -Kant, Do be do be do -Sinatra
    posts - 146,comments - 147,trackbacks - 0
      1/**
      2 * 在C#中提供了一個專門用于簡單測試運行時間的類StopWatch,
      3 * 但是貌似JDK中并沒有提供這樣的類,既然沒有提供,那么自己動手豐衣足食了。
      4 * 參考網上代碼,簡單寫了一個。
      5 * 
      6 * 后來查了以下,貌似commons-lang中已經提供了一個StopWatch的類了,
      7 * 而且那個類的功能寫的更完善一些,這個類就當是一個學習的漸進過程了。
      8 * 
      9 * @author levin
     10 * @since 2011-07-07
     11 */

     12public class StopWatch {
     13    private long startTime;
     14    private long endTime;
     15    private boolean isRunning;
     16    
     17    /**
     18     * 構造{@link #StopWatch}實例,清除所有狀態
     19     */

     20    public StopWatch() {
     21        reset();
     22    }

     23    
     24    /**
     25     * 調用{@link #start()}以開始計時,調用該方法時,確保{@link #StopWatch}是沒有處于運行狀態,
     26     * 即{@link #start()}方法還未調用,或已經調用了{@link #stop()}方法。否則會拋{@link #IllegalStateException}
     27     * 
     28     * @return {@link #StopWatch}
     29     * @since 2011-07-07
     30     */

     31    public StopWatch start() {
     32        if(isRunning) {
     33            throw new IllegalStateException("StopWath is already started");
     34        }

     35        
     36        startTime = System.currentTimeMillis();
     37        endTime = -1;
     38        isRunning = true;
     39        
     40        return this;
     41    }

     42    
     43    /**
     44     * 調用{@link #stop()}方法以停止計時,調用該方法時,確保{@link #StopWatch}已經處于運行狀態,
     45     * 即已經調用{@link #start()}方法,否則會拋{@link #IllegalStateException}。
     46     * 調用該方法后,即可以使用{@link #getRunningTime()}、{@link #getRunningSecs()}方法以獲取運行時間
     47     * 
     48     * @return {@link #StopWatch}
     49     * @since 2011-07-07
     50     */

     51    public StopWatch stop() {
     52        if(isRunning) {
     53            throw new IllegalStateException("StopWatch hasn't been started yet");
     54        }

     55        
     56        endTime = System.currentTimeMillis();
     57        isRunning = false;
     58        
     59        return this;
     60    }

     61    
     62    /**
     63     * 獲取{@link #StopWatch}的運行時間,以毫秒為單位。如果還未調用{@link #stop()}方法,則返回當前時間
     64     * 和開始時間毫秒差;否則返回{@link #StopWatch}的Watch時間。
     65     * 
     66     * @return 獲取{@link #StopWatch}的運行時間,以毫秒為單位
     67     * @since 2011-07-07
     68     */

     69    public long getElapsed() {
     70        if(isRunning) {
     71            return System.currentTimeMillis() - startTime;
     72        }
     else {
     73            return endTime - startTime;
     74        }

     75    }

     76    
     77    /**
     78     * 獲取{@link #StopWatch}的運行時間,以秒為單位。其他和{@link #getElapsed()}方法類似。
     79     * 
     80     * @return 獲取{@link #StopWatch}的運行時間,以秒為單位
     81     * @since 2011-07-07
     82     */

     83    public long getElapsedSecs() {
     84        return TimeUnit.MILLISECONDS.toSeconds(getElapsed());
     85    }

     86    
     87    /**
     88     * 獲取{@link #StopWatch}的運行時間,即調用{@link #start()}到調用{@link #stop()}的時間間隔,以毫秒為單位。
     89     * 若調用此方法時,還未調用{@link #stop()}方法,則拋{@link #IllegalStateException}。
     90     * 若在調用{@link #start()}方法前調用該方法,則返回0
     91     * 
     92     * @return 獲取{@link #StopWatch}的運行時間,即調用{@link #start()}到調用{@link #stop()}的時間間隔,以毫秒為單位
     93     * @since 2011-07-07
     94     */

     95    public long getRunningTime() {
     96        if(isRunning) {
     97            throw new IllegalStateException("StopWatch hasn't been stopped yet");
     98        }

     99        
    100        return endTime - startTime;
    101    }

    102    
    103    /**
    104     * 獲取{@link #StopWatch}的運行時間,以秒為單位。其他參考{@link #getRunningTime()}方法。
    105     * 
    106     * @return 獲取{@link #StopWatch}的運行時間,以秒為單位
    107     * @since 2011-07-07
    108     */

    109    public long getRunningSecs() {
    110        return TimeUnit.MILLISECONDS.toSeconds(getRunningTime());
    111    }

    112    
    113    
    114    /**
    115     * 清除當前所有狀態
    116     * 返回{@link #StopWatch}而不是void,是為了能實用方法鏈的模式
    117     * 
    118     * @return {@link #StopWatch}
    119     * @since 2011-07-07
    120     */

    121    public StopWatch reset() {
    122        startTime = -1;
    123        endTime = -1;
    124        isRunning = false;
    125        
    126        return this;
    127    }

    128}
    posted on 2011-07-08 11:05 DLevin 閱讀(930) 評論(0)  編輯  收藏 所屬分類: CodeTools
    主站蜘蛛池模板: 亚洲婷婷综合色高清在线| 四虎在线免费播放| 精品国产污污免费网站| 国产99久久久国产精免费| 美女尿口扒开图片免费| 国产精品亚洲精品久久精品| 亚洲日本va一区二区三区| 亚洲无人区码一二三码区别图片| 亚洲一区AV无码少妇电影| 亚洲精品乱码久久久久久V| 亚洲日韩精品国产一区二区三区| 亚洲国产精品网站在线播放| MM1313亚洲精品无码久久| 国产成人综合亚洲绿色| 极品美女一级毛片免费| 一级大黄美女免费播放| 国产免费牲交视频免费播放 | 免费a级毛片无码av| 又粗又大又猛又爽免费视频| 又大又黄又粗又爽的免费视频| 亚洲精品视频免费| 伊人久久亚洲综合| 亚洲色图在线播放| 91大神亚洲影视在线| 亚洲a级片在线观看| 亚洲精品国产精品| 一级毛片免费毛片毛片| 日本免费人成网ww555在线| 亚洲无砖砖区免费| 日本不卡视频免费| 亚洲人成人无码网www国产| 亚洲国产精品VA在线看黑人| 亚洲国产美女视频| 亚洲成a∨人片在无码2023| 夜夜爽妓女8888视频免费观看| 国产成人精品一区二区三区免费| 又黄又爽又成人免费视频| 免费看国产一级特黄aa大片| 亚洲精品~无码抽插| 亚洲伊人色一综合网| 日本一区二区三区在线视频观看免费 |