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