多线程访问共享可变数据的时候,会涉及到同步问题,但是有时候我们不需要数据共享,这时候线程封闭就被提出来了。
在java中,线程封闭体现为2种方式:
-
ThreadLocal
原理:会自动在每个线程上创建一个T的副本,多个线程互不影响。
用法:ThreadLocal<T> local = new ThreadLocal<T>();
例子:
image.png
image.png
image.png
-
局部变量(栈封闭)
原理:局部变量存在于线程的栈中,因此多线程情况下本身就是相互隔离的,多线程不能互相访问。










网友评论