Java并发编程基础-ThreadLocal的使用

2018-05-20  本文已影响23人  markfork

章节目录

1.ThreadLocal 简介

什么是ThreadLocal

ThreadLocal 为线程变量,是一个以ThreadLocal对象为key,任意对象为值的存储
结构,这个结构被附带到线程上。

ThreadLocal的作用

通过set(T)来设置一个值,在当前线程下通过get()方法获取到原先设置的值。

2.ThreadLocal 使用

Profiler
begin() 获取接口执行时间点、end()获取从begin()方法调用开始到end()方法被调用时的时间差,单位毫秒。

package org.seckill.Thread;

public class Profiler {


    private static final ThreadLocal<Long> TIME_THREADLOCAL = new ThreadLocal<Long>(){
        //第一次get()方法调用时会进行初始化,这个是在set()方法没有被调用的情况下发生,每个线程调用一次
        protected Long initialValue() {
          return System.currentTimeMillis();
        }
    };

    //设置初始运行时刻
    public static final void begin(){
        TIME_THREADLOCAL.set(System.currentTimeMillis());
    }

    public static final long end(){
        return System.currentTimeMillis()- TIME_THREADLOCAL.get();
    }

    public static void main(String[] args) {
        Profiler.begin();
        Interrupted.SleepUnit.second(1);
        System.out.println("cost time "+Profiler.end());
    }
}

运行结果:


运行结果
上一篇下一篇

猜你喜欢

热点阅读