美文网首页
ThreadLocal

ThreadLocal

作者: yxuiang | 来源:发表于2018-07-04 12:09 被阅读0次
    运行代码
    public class ThreadLocalTest {
        public static class MyRunnable implements Runnable {
            @Override
            public void run() {
                ThreadLocalTest.test();
            }
        }
    
        public static void main(String[] args) {
            MyRunnable sharedRunnableInstance = new MyRunnable();
            Thread thread1 = new Thread(sharedRunnableInstance);
            Thread thread2 = new Thread(sharedRunnableInstance);
            thread1.start();
            thread1.run();
            thread1.run();
            thread2.start();
            thread2.run();
        }
    
        private static ThreadLocal threadLocal = new ThreadLocal();
    
        private static void test() {
            if (threadLocal.get() == null) {
                threadLocal.set(Thread.currentThread().getName() + (Math.random() * 100D));
            }
            System.out.println(threadLocal.get());
        }
    }
    
    多次运行返回结果
    main22.761071473890006
    main22.761071473890006
    Thread-056.212406593371476
    main22.761071473890006
    Thread-113.707351108894805
    
    结果分析:同一个线程取出来的值是相同的,而且在多个线程运行过程中不会覆盖其他线程存放的数据
    表明,ThreadLocal,它是线程绑定的变量,提供线程局部变量(一个线程一个ThreadLocal,A线程的ThreadLocal只能看到A线程的ThreadLocal,不能看到B线程的ThreadLocal)
    哈哈哈

    相关文章

      网友评论

          本文标题:ThreadLocal

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