多執行緒筆記 ThreadLocal

2021-10-21 18:20:06 字數 888 閱讀 1523

執行緒本地變數

set 設定到當前執行緒內的map中

所以不能被執行緒共享

threadlocal應用 spring 宣告式事務

threadlocal可以保證 乙個執行緒儲存同乙個物件 所以資料庫連線就可以存在threadlocal內乙個事務必須在乙個連線內,spring 宣告事務就是使用threadlocal來設計的,保證了在多執行緒環境下connection執行緒安全。

m m = new m(); //強引用不能被**

//m = null; //清空引用才能被**

softreferencem = new softreference<>(new byte[1024*1024*10]);
軟引用 空間不夠才** 非常時候做快取

weakreferencem = new weakreference<>(new m());

//弱引用 一般用於容器

threadlocaltl = new threadlocal<>();

tl.set(new m());

tl.remove(); //坑點 key是弱引用 但是value不是 所以需要手動remove

為什麼threadlocal 要使用弱引用?

因為threadlocal是執行緒本地物件會跟隨著執行緒一直存活 如果採用強引用 記憶體一直都不會被** 就會產生記憶體洩漏

private static final referencequeuequeue = new referencequeue<>();

phantomreferencephantomreference = new phantomreference<>(new m(), queue);

//在虛引用被**時會 放到queue乙個通知

多執行緒筆記

1 stdin fileno 在unix一些系統呼叫中使用到stdin fileno表示標準輸入,stdout fileno表示標準輸出,stderr fileno表示標準出錯,使用時需要加標頭檔案 在unix下還有stdin,stdout,stderr表示同樣的含義。stdin fileno與st...

多執行緒筆記

一.程序 就是cpu所要執行的乙個任務 自己理解的 執行緒 執行緒是乙個併發執行的順序流,乙個程序包括多個順序執行流程,這執行流程稱為執行緒 就是任務中許多的 二.執行緒排程分配cpu的時間片段給不同的執行緒,得到時間片段的執行緒被cpu執行,其他執行緒等待,執行緒排程會盡可能的分配時間片段取執行。...

多執行緒筆記

1.執行緒的建立方法 繼承thread類 實現runnable介面 重寫run方法 實現callable介面 重寫call方法 2.靜態 簡單來說,靜態 就是 物件和目標物件實現同樣的介面,物件會將目標物件傳遞進來,用目標物件來呼叫方法並新增自己的操作。new thread system.out.p...