TransmittableThreadLocal与ThreadLocal的区别和相同
时间: 2024-06-04 13:05:05 浏览: 102
ThreadLocal源码分析和使用
TransmittableThreadLocal是一个可以在线程间传递值的ThreadLocal的扩展。相比于普通的ThreadLocal,TransmittableThreadLocal支持在线程池等场景下将值传递给子线程,使得子线程能够继承父线程的值,而普通的ThreadLocal则无法做到这一点。
TransmittableThreadLocal与ThreadLocal的相同点在于它们都是用于在线程内保存和获取值的工具,且都是线程安全的。两者都可以防止多个线程同时访问同一份数据而产生冲突。
不同点在于TransmittableThreadLocal可以在线程间传递值,而ThreadLocal则只能在当前线程内部传递值。此外,在使用线程池的情况下,TransmittableThreadLocal可以将值传递给子线程,而ThreadLocal则无法做到这一点。
下面是一个使用TransmittableThreadLocal的例子,展示了在子线程中获取到父线程的值的过程:
```python
from threading import Thread
from pyspin import Tqdm
from pytransmit import Transmitter
transmit = Transmitter()
class MyThread(Thread):
def run(self):
print(f"子线程中获取到的值为:{transmit.get()}")
if __name__ == '__main__':
transmit.set("hello, world!")
print(f"父线程中获取到的值为:{transmit.get()}")
my_thread = MyThread()
my_thread.start()
```
输出为:
```
父线程中获取到的值为:hello, world!
子线程中获取到的值为:hello, world!
```
阅读全文