亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

線程池重用線程時,會對ThreadLocal的值進行清空嗎?

線程池重用線程時,會對ThreadLocal的值進行清空嗎?

Smart貓小萌 2019-03-01 10:36:47
線程池重用線程時,會對ThreadLocal的值進行清空嗎?我在看《Java并發編程實戰》一書的第8章時,有如下一句話: 只有當線程本地值的生命周期受限于任務的生命周期時,在線程池的線程中使用ThreadLocal才有意義,而在線程池的線程中不應該使用ThreadLocal在任務之間傳遞值。 麻煩幫我稍微解釋下這句話,特別是前半句,謝謝!
查看完整描述

1 回答

?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

不會清空,要你自己去清空。

只有當線程本地值的生命周期受限于任務的生命周期時,在線程池的線程中使用ThreadLocal才有意義

這句話翻譯的有問題應該是:

只有當ThreadLocal的生命周期受限于Task的生命周期時,在Thread Pool的Thread里使用ThreadLocal才有意義。

Task指的是一個Thread所執行的任務。

總之就是告訴你,如果你能夠在使用ThreadLocal的時候管理它的創建、銷毀,那么就可以用,否則會出問題。原因是ThreadLocal是和Thread綁定的,如果Thread是從Thread Pool中拿出來的,那么意味著Thread可能會被復用,如果被復用,你就一定得保證這個Thread上一次結束的時候,其關聯的ThreadLocal被清空掉,否則就會串到下一次使用。

查看完整回答
2 反對 回復 2019-03-01
  • 1 回答
  • 0 關注
  • 3006 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號