本文主要是介绍TransmittableThreadLocal-可在父子线程中传递变量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal的区分及原理:
推荐博文:
Java 学习笔记(三)之 ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal
作者结论总结:
1) ThreadLocal 用来存储线程本地变量,仅是线程自己存储数据的,若一个线程要使用另一个线程存储在 ThreadLocal 变量,除非 存储在 ThreadLocal 中的 Value 变量是线程安全的引用变量,且一直引用的是同一个内存地址;
2) inheritableThreadLocal 可以让子线程使用父线程中存放在 inheritableThreadLocal 的引用变量,但若父线程每次执行 都将 引用变量指向的内存地址变更且子线程是非线程池中已有的线程,则子线程可以使用变更内存地址的引用,否则使用的引用变量还是指向旧内存地址,造成子线程无法使用父线程的数据;
3) TransmittableThreadLocal 就可以就觉 2) 的问题,所以当子线程使用父线程池中的数据,且子线程是来自线程值的话,建议直接使用 TransmittableThreadLocal。
这篇关于TransmittableThreadLocal-可在父子线程中传递变量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!