All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.codeboy.common.base.time.CBTimer Maven / Gradle / Ivy

There is a newer version: 1.3.9
Show newest version
package me.codeboy.common.base.time;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

/**
 * 计时器,用于简单记录时间间隔,例如代码执行时间
 * Created by yuedong.li on 06/11/2016.
 */
public class CBTimer {
    private Map times = new HashMap<>();
    private final static String TIME_KEY = "CB_TIMER_%d"; //内置计时前缀
    private long count = 0;

    /**
     * 记录当前时间
     */
    public synchronized void push() {
        times.put(String.format(Locale.CHINA, TIME_KEY, ++count), System.currentTimeMillis());
    }

    /**
     * 将当前时间与key进行关联,以便后续可以根据key获取push时间
     * 

key值不要以CB_TIMER开头,CB_TIMER为系统内置计时key,以CB_TIMER开头的key将自动被过滤掉

* * @param key key */ public void push(String key) { push(key, System.currentTimeMillis()); } /** * 将指定时间与key进行关联 *

key值不要以CB_TIMER开头,CB_TIMER为系统内置计时key,以CB_TIMER开头的key将自动被过滤掉

* * @param key key */ public void push(String key, long time) { if (key.startsWith("CB_TIMER")) { return; } times.put(key, time); } /** * 获取最后一个push到当前的时间 * {@link CBTimer#push()} * * @return 相应时间 */ public long pop() { String key = String.format(Locale.CHINA, TIME_KEY, count); return pop(key); } /** * 获取最后一个push key到当前的时间 * {@link CBTimer#push(String)} * * @param key key * @return 相应时间 */ public long pop(String key) { return pop(key, System.currentTimeMillis()); } /** * 获取最后一个push key到指定时间之间的时间 * {@link CBTimer#push(String)} * * @param key key * @return 相应时间 */ public long pop(String key, long time) { if (!times.containsKey(key)) { return -1L; } long recordTime = times.get(key); times.remove(key); return time - recordTime; } /** * 是个有key的相关记录值 * * @param key key * @return 是否含有 */ public boolean containsKey(String key) { return times.containsKey(key); } /** * 获取指定key对应的时间,如果key不存在,返回null * * @param key key * @return 相应时间 */ public Long get(String key) { return times.get(key); } /** * 获取最后一次push的时间 * * @return 时间, 单位毫秒 */ public Long get() { return times.get(String.format(Locale.CHINA, TIME_KEY, count)); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy