多執行緒 「等待喚醒」程式設計題

2021-10-04 08:42:22 字數 1015 閱讀 3316

要求:

第乙個執行緒:遍歷1–1000所有的數字,在遍歷過程中,如果發現這個數字能同時被2,3,5,7整除,立即wait()等待,讓第二個執行緒進入。

第二個執行緒:執行後,將乙個計數器 + 1,之後再喚醒等待的執行緒。

主線程中:休息2秒,讓兩個執行緒全部執行完畢,列印「計數器」的結果。

我的**:

>

public

class

waitnotifydemo

;>

>

/*第乙個執行緒:遍歷1--1000所有的數字,在遍歷過程中,

> 如果發現這個數字能同時被2,3,5,7整除,立即wait()等待,讓第二個執行緒進入。*/

>

newthread

(new

runnable()

>

}catch

(interruptedexception e)

>

}>

}>

}>})

.start()

;>

>

//第二個執行緒:執行後,將計數器 + 1之後再喚醒執行緒一。

>

newthread

(new

runnable()

>

}catch

(interruptedexception e)

>

>

}>

}>

}>})

.start()

;>

>

//main執行緒等待

>

trycatch

(interruptedexception e)

> system.out.

println

("計數器最終數:"

+ cnt)

;>

}}

java 多執行緒 等待喚醒機制

package thread執行緒 生產者消費者問題 問題1 為什麼要用while而不用if進行判斷 因為是多執行緒在操作同一資源,即有多個生產者也有多個消費者,如果用if進行判斷的話會出現生產者生產連續生產多次,而消費者只消費 消費一次,或生產者生產一次消費者消費多次的錯誤資訊,這是為什麼呢?原因...

java多執行緒等待喚醒機制

等待喚醒機制 object類中提供了三個方法 wait 等待 notify 喚醒單個執行緒 notifyall 喚醒所有執行緒 為什麼這些方法不定義在thread類而定義在object類中呢?這些方法的呼叫必須通過鎖物件呼叫,而我們使用的鎖物件是任意鎖物件。所以,這些方法必須定義在object類中。...

多執行緒06 執行緒通訊(等待喚醒機制)

多個執行緒在操作同乙個資源,但是操作的動作不同。比如我們之前看的賣票,多個執行緒操作動作相同,都是賣票,就不屬於執行緒通訊 比如乙個執行緒存錢,乙個執行緒取錢,就屬於執行緒通訊。怎麼辦呢?解決的方法就是加同步,同步需要滿足兩個前提 第一 必須有兩個或者兩個以上的執行緒 第二 多個執行緒必須使用同一把...