多線程訪問共享可變數(shù)據(jù)的時候,會涉及到同步問題,但是有時候我們不需要數(shù)據(jù)共享,這時候線程封閉就被提出來了。
在java中,線程封閉體現(xiàn)為2種方式:
-
ThreadLocal
原理:會自動在每個線程上創(chuàng)建一個T的副本,多個線程互不影響。
用法:ThreadLocal<T> local = new ThreadLocal<T>();
例子:
image.png
image.png
image.png 局部變量(棧封閉)
原理:局部變量存在于線程的棧中,因此多線程情況下本身就是相互隔離的,多線程不能互相訪問。


