当前位置: 首页 > 图灵资讯 > java面试题> 金三银四精选java面试题-ThreadLocal怎么进行父子线程通信

金三银四精选java面试题-ThreadLocal怎么进行父子线程通信

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

ThreadLocal怎么进行父子线程通信

Java多线程编程中,父子线程之间的数据传递和共享问题一直是一个非常重要的议题。如果不处理好数据的传递和共享,会导致多线程程序的性能下降或者出现线程安全问题。ThreadLocal是Java提供的一种解决方案,可以非常好地解决父子线程数据共享和传递的问题。

那么它是如何实现通信的了?在Thread类中存在InheritableThreadLocal变量,简单的说就是使用InheritableThreadLocal来进行传递,当父线程的InheritableThreadLocal不为空时,就会将这个值传到当前子线程的InheritableThreadLocal。

/**
 * ThreadLocal父子线程通信
 * 创建人:百里
 */
public class BaiLiInheritableThreadLocalDemo {
    public static void main(string[] args) throws Exception {
        ThreadLocal threadLocal = new ThreadLocal<>();
        threadLocal.set("threadLocal");

        ThreadLocal inheritableThreadLocal = new InheritableThreadLocal();
        inheritableThreadLocal.set("分享 + inheritableThreadLocal");

        Thread t = new Thread(() -> {
            System.out.println("一键三连 + " + threadLocal.get());
            System.out.println("一键三连 + " + inheritableThreadLocal.get());
        });
        t.start();
    }
}