線程是一個(gè)重量級(jí)的對象,應(yīng)該避免頻繁創(chuàng)建和銷毀。原因:創(chuàng)建線程需要調(diào)用操作系統(tǒng)API,然后os為線程分配資源 線程池使用的生產(chǎn)者-消費(fèi)者模式:線...
CountDownLatch 應(yīng)用場景:一個(gè)線程等待多個(gè)線程的場景。 這個(gè)應(yīng)用場景很容易理解,假設(shè)有三個(gè)線程,分別是A,B,C; C要等待A,B...
StampedLock支持三種模式:寫鎖、悲觀讀鎖、樂觀讀 寫鎖和悲觀讀鎖與ReadWriteLock的寫鎖、讀鎖語義類似。StampedLoc...
讀寫鎖適用于讀多寫少的場景 三條原則:1.允許多個(gè)線程同時(shí)讀共享變量; 2.只允許一個(gè)線程寫共享變量; 3.如果一個(gè)寫線程正在執(zhí)行寫操作,此時(shí)禁...
Semaphore 信號(hào)量模型:一個(gè)計(jì)數(shù)器,一個(gè)等待隊(duì)列,三個(gè)方法 init():設(shè)置計(jì)數(shù)器的初始值。 down():計(jì)數(shù)器的值減 1;如果此時(shí)...
并發(fā)經(jīng)驗(yàn)告訴我們:首先使用Java SDK中的并發(fā)包,迫不得已再使用低級(jí)的同步原語(synchronized/Lock/Semaphore等)。...
操作系統(tǒng)線程生命周期 初始狀態(tài)(init)、可運(yùn)行狀態(tài)(runnable)、運(yùn)行狀態(tài)(running)、休眠狀態(tài)(waiting)和終止?fàn)顟B(tài)(t...
并發(fā)的核心問題:一個(gè)是互斥,即同一時(shí)刻只允許一個(gè)線程訪問共享資源;另一個(gè)是同步,即線程之間如何通信、協(xié)作。 三種管程模型:java參考的是MES...
等待-通知機(jī)制:如果線程要求的條件不滿足,則線程阻塞自己,進(jìn)入等待狀態(tài);當(dāng)線程要求的條件滿足后,通知等待的線程重新執(zhí)行。 在上一節(jié)中使用whil...