当前位置: 首页 > 图灵资讯 > java面试题> 金三银四精选java面试题-ThreadLocal是什么?

金三银四精选java面试题-ThreadLocal是什么?

来源:图灵教育
时间:2024-01-01 19:15:06
 

ThreadLocal是什么?

ThreadLocal也就是线程本地变量。如果你创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地拷贝,多个线程操作这个变量的时候,实际是操作自己本地内存里面的变量,从而起到线程隔离的作用,避免了线程安全问题。

ThreadLocal是整个线程的全局变量,不是整个程序的全局变量。

/**
 * ThreadLocal
 * 创建人:百里
 */
public class BaiLiThreadLocalDemo {
    //创建一个静态的threadLocal变量,被所有线程共享
    static ThreadLocal<Integer> threadLocal = new ThreadLocal<>();

    public static void main(string[] args) throws InterruptedException {
        Thread thread1 = new Thread(() -> {
            System.out.println(threadLocal.get());
            threadLocal.set(0);
            System.out.println(threadLocal.get());
        },"Thread-1");

        Thread thread2 = new Thread(() -> {
            System.out.println(threadLocal.get());
            threadLocal.set(1);
            System.out.println(threadLocal.get());
        },"Thread-2");

        thread1.start();
        thread1.join();
        thread2.start();
        thread2.join();
    }
}