生產者消費者

2021-07-25 03:00:54 字數 905 閱讀 7353

//執行緒通訊: 乙個執行緒完成了自己的任務時,要通知另外乙個執行緒去完成另外乙個任務.

//wait(): 等待 如果執行緒執行了wait方法,那麼該執行緒會進入等待的狀態,等待狀態下的執行緒必須要被其他執行緒呼叫notify方法才能喚醒。

//notify(): 喚醒 喚醒執行緒池等待執行緒其中的乙個。

//notifyall() : 喚醒執行緒池所有等待 執行緒。

//wait與notify方法要注意的事項:

// 1. wait方法與notify方法是屬於object物件 的。

// 2. wait方法與notify方法必須要在 同步**塊 或者是 同步函式中才能 使用。

// 3. wait方法與notify方法必需要由鎖物件呼叫。

//產品類

class product

//生產者

class producer extends thread

@override

public void run() else

system.out.println("生產者生產出了:"+ p.name+" **是:"+ p.price);

p.flag = true;

i++;

p.notifyall(); //喚醒消費者去消費

}else catch (interruptedexception e) }}

} }}

//消費者

class customer extends thread

@override

public void run() else catch (interruptedexception e) }}

} }}

public class xxtx

}

生產者消費者 生產者與消費者模式

一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...

生產者消費者

using system using system.collections.generic using system.threading namespace gmservice foreach thread thread in producers q.exit console.read public...

生產者消費者

生產者和消費者是一種經典的供求案例,生產者和消費者執行緒之間的關係涉及執行緒之間的互動。生產者執行緒產生的資料項,將來會被消費者消費,每個生產出來的資料會被儲存在乙個共享的倉庫中。假設執行緒以不同的速度進行,那麼將會導致消費者可能獲取到還未生產的資料,生產者也有可能在消費者還未取走前一條資料的前提下...