美文网首页
ThreadLocal的使用

ThreadLocal的使用

作者: 全栈未遂工程师 | 来源:发表于2016-07-08 10:38 被阅读21次

    ThreadLocal,线程变量,是一个以ThreadLocal对象为键,任意对象为值的存储结构。这个结构被附带在线程上,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的一个值。
    可以通过set(T)来设置一个值,在当前线程下通过get()方法获取到原来设置的值。

    我的理解:
    ThreadLocal就相当于一个Map,所有的线程都可以往这个map里面put,其中key值就是这个线程,每个线程从这个map中取值的时候,都只能取到自己put的内容。

    package com.threadlocaltest;
    
    import java.util.concurrent.TimeUnit;
    
    public class Profiler {
        private static final ThreadLocal<Long> TIME_THREADLOCAL = new ThreadLocal<Long>(){
            @Override
            protected Long initialValue() {
                return Thread.currentThread().getId();
            }
        };
        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();
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Profiler.end());
        }
    }
    

    相关文章

      网友评论

          本文标题:ThreadLocal的使用

          本文链接:https://www.haomeiwen.com/subject/fkoljttx.html