目錄
中斷
線程池
鎖
=====
======
======
======
======
======
======
======
======
======
中斷是通過調用Thread.interrupt()方法來做的. 這個方法通過修改了被調用線程的中斷狀態來告知那個線程, 說它被中斷了. 對于非阻塞中的線程, 只是改變了中斷狀態, 即Thread.isInterrupted()將返回true; 對于可取消的阻塞狀態中的線程, 比如等待在這些函數上的線程, Thread.sleep(), Object.wait(), Thread.join(), 這個線程收到中斷信號后, 會拋出InterruptedException, 同時會把中斷狀態置回為false.調用該方法結束之后, 中斷狀態會變成false
參考1
在一些場景中,也需要要設置一個不同的最小線程數。比如當一個系統最大需要同時處理2000個任務,而平均任務數量只是20個情況下,就需要將最小線程數設置成20,而不是等于其最大線程數2000。此時如果還是將最小線程數設置的等于最大線程數的話,那么閑置線程(Idle Thread)占用的資源就比較可觀了,尤其是當使用了ThreadLocal類型的變量時,會在每個線程的context中存儲該變量的副本。
ReentrantLock是通過內部的Sync變量實現其鎖機制(分為公平和非公平,都是繼承自AbstractQueuedSynchronizer),AbstractQueuedSynchronizer提供了狀態位+隊列的機制實現了鎖機制
新聞熱點
疑難解答