threadlocal使用_Java多线程数据共享神器ThreadLocal
生活随笔
收集整理的這篇文章主要介紹了
threadlocal使用_Java多线程数据共享神器ThreadLocal
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ThreadLocal內部結構和作用
從ThreadLocal源碼中可以看到其提供了3個方法,分別是get/set/remove。維護了一個ThreadLocalMap的數據結構。在多線程環境下能正確地獲取共享的數據變量或值。
ThreadLocal應用原理
ThreadLocal提供了線程本地實例。每個線程在使用該變量時初始化一個完全獨立的實例副本。保證了獲取的變量正確性和可靠性。
ThreadLocal使用場景
ThreadLocal應用場景常見于:每個線程需要單獨保存實例;Mybatis多數據源切換;Spring聲明式事務的實現機制。
ThreadLocal面試問題
面試官比較喜歡問到的關于ThreadLocal的問題有以下:
1、說一下你理解的ThreadLocal數據結構和原理。
答案上面已分析。
2、ThreadLocal會導致內存泄漏嗎?
回答:實際上ThreadLocalMap中使用的是弱引用,垃圾回收的時候會被清理掉的。一般情況下不會出現內存泄漏。但是特別極端情況會導致內存泄漏。比如:ThreadLocal引用被標記為null并且后續沒有set/get/remove操作;線程一直不停的運行;觸發了垃圾回收;
3、SpringMVC采用單例模式,如何保證多線程訪問變量數據安全。
回答:可以通過定義ThreadLocal變量
總結
以上是生活随笔為你收集整理的threadlocal使用_Java多线程数据共享神器ThreadLocal的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pb 应用 迁移 linux_功能化生物
- 下一篇: java美元兑换,(Java实现) 美元