多執行緒複習 六 執行緒的通訊

2021-09-26 16:24:09 字數 740 閱讀 4384

一、說明

採用一定的方式,讓執行緒之間進行交流,最終達到控制線程的目的

二、通訊中用到的api

★注意:以下為object類的方法

1、wait

語法:物件名.wait();

注意:該物件為鎖物件,如果鎖物件為this,實際上可以省略

特點:①讓當前執行緒等待,直到其他執行緒呼叫了該鎖物件下的notify或notifyall為止

②導致鎖的釋放

③當被喚醒後,將從斷點處繼續往下執行

④wait、notify、notifyall的呼叫者和鎖物件必須是同乙個!!!

2、notify

語法:物件.notify();

注意:該物件為鎖物件,如果是this,可以省略

特點:①喚醒當前鎖物件下的正在等待的單個執行緒。如果有多個執行緒都在等待,則隨機喚醒乙個。(優先順序較高優先被喚醒)

3、notifyall

語法:物件.notifyall();

注意:該物件為鎖物件,如果是this,可以省略

特點:①喚醒當前鎖物件下的正在等待的所有執行緒。

三、【總結】落地步驟

1、先加上同步(遵循同步的落地步驟)

2、根據邏輯需要,新增wait或notify ★

①判斷②幹活

③通知3、檢測多個執行緒使用的鎖物件以及wait、notify的呼叫者是否同乙個!

經典案例:

1、一一交替:兩個賬戶一一交替的取錢

2、生產者和消費者

Java多執行緒(六) 執行緒讓步

一 yield 介紹 yield 的作用是讓步。它能讓當前執行緒由 執行狀態 進入到 就緒狀態 從而讓其它具有相同優先順序的等待執行緒獲取執行權 但是,並不能保證在當前執行緒呼叫yield 之後,其它具有相同優先順序的執行緒就一定能獲得執行權 也有可能是當前執行緒又進入到 執行狀態 繼續執行!二 y...

六 執行緒的實現方式 多執行緒模型

1.執行緒分為使用者級執行緒和核心級執行緒 2.使用者級執行緒由應用程式通過執行緒庫實現,所有的執行緒管理工作都由應用程式負責 包括執行緒切換 3.使用者級執行緒中,執行緒切換可以在使用者態下即可完成,無需作業系統干預。4.在使用者看來,是有多個執行緒,但是在作業系統的核心來看,並不意識到執行緒的存...

執行緒 六 執行緒池

1.可重用的固定集合執行緒池,以共享的無界佇列的方式來執行這些執行緒 executerservice threadpool executors.newfixedthreadpool 3 容納固定的執行緒 這個執行緒就是建立乙個固定大小的執行緒池,等待任務來的時候就取執行緒池中的執行緒進行任務的執行,...