ThreadLocal

时间:2019-10-18
本文章向大家介绍ThreadLocal,主要包括ThreadLocal使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
/*
ThreadLocal:使用空间换时间  效率更高
线程同步:使用时间换空间
 
 ThreadLocal可能会导致内存泄漏
 */
/**
 * ThreadLocal 线程局部变量
 */
public class ThreadLocal2 {

    static ThreadLocal<Person> p = new ThreadLocal<>();

    public static void main(String[] args) {
        new Thread(() -> {
            try {
                TimeUnit.SECONDS.sleep(2);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(p.get()); // 2. 虽然threadLocal时共享变量,但是取不到其他线程放入的值,所以此处为null
        }).start();

        new Thread(() -> {
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            p.set(new Person()); // 1. 往线程局部变量放入一个person
        }).start();
    }
    
    static class Person {
        String name = "zhangsan";
    }
}

/*
ThreadLocal:使用空间换时间  效率更高
线程同步:使用时间换空间
 
 ThreadLocal可能会导致内存泄漏
 */

原文地址:https://www.cnblogs.com/gxlaqj/p/11698223.html