后台定时更新时钟,JVM退出时,线程自动回收---跟rocketmq学习

来源:互联网 发布:多益网络笔试题 编辑:程序博客网 时间:2024/06/05 03:55

具体代码如下:

public class SystemClock {

   //精确值具体到毫秒
    private final long precision;
    private final AtomicLong now;

    public SystemClock(long precision) {
        this.precision = precision;
        now = new AtomicLong(System.currentTimeMillis());
        scheduleClockUpdating();
    }

    private void scheduleClockUpdating() {
        ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
            @Override
            public Thread newThread(Runnable runnable) {
                Thread thread = new Thread(runnable, "System Clock");
                thread.setDaemon(true);
                return thread;
            }
        });
        scheduler.scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
                now.set(System.currentTimeMillis());
            }
        }, precision, precision, TimeUnit.MILLISECONDS);
    }

    public long now() {
        return now.get();
    }

    public long precision() {
        return precision;
    }

}


具体使用样例:

SystemClock clock = new SystemClock(1);

long time = clock.now()

0 0
原创粉丝点击