//測試類
public class test }/*
資源類:包子類
設定包子的屬性皮陷
包子狀態 有true 沒有false
*/class baozi
//包子鋪
/* 生產者(包子鋪):是乙個執行緒類,繼承thread類
設定執行緒的任務:生產包子
true:有包子
包子呼叫wait方法進入等待狀態
false:沒有包子
包子鋪生產包子
修改包子的狀態為true
喚醒吃貨執行緒,讓吃貨去吃包子
注意:包子鋪執行緒和吃貨執行緒關係---》通訊(互斥)
必須使用同步技術保證兩個執行緒只能有乙個執行緒在執行
鎖物件必須保證唯一,可以使用包子物件作為鎖物件
包子鋪執行緒和吃貨執行緒的類需要把包子物件作為引數傳遞進來
1.需要在成員的位置上建立乙個包子變數
2.使用帶參構造,為這個包子變數賦值
*/class cost extends thread
//重寫run方法
@override
public void run() catch (interruptedexception e)
}//包子鋪沒有包子,被喚醒之後,包子鋪生產包子
//增加一些難度;交替生產兩種型別的包子
if (count % 2 == 0) else
count++;
system.out.println("包子鋪正在生產:" + baozi.xian +
baozi.pi + "包子");
//生產包子需要有乙個過程;等待1秒鐘
try catch (exception e)
//包子鋪生產好了包子
//修改包子的狀態為true 有
baozi.flag = true;
//喚醒吃貨執行緒,讓吃貨執行緒去吃包子
baozi.notify();
system.out.println("包子鋪已經生產好了:" + baozi.pi
+ baozi.xian + "包子,吃貨可以去吃了。。。。");}}
}}/*
消費者(吃貨類):是乙個執行緒類
設定執行緒的任務:吃包子
對包子的狀態進行判斷
true :有包子
吃貨吃包子
吃貨吃完包子
修改包子的狀態為false:沒有包子
吃貨喚醒包子鋪執行緒,生產包子
false:沒有包子
吃貨呼叫wait方法,進入到等待狀態
*/class foodie extends thread
//3.重寫run方法
@override
public void run() catch (exception e)
}//被喚醒後執行吃包子
system.out.println("吃貨正在吃:" + baozi.pi + baozi.xian
+ "包子");
//吃貨吃完包子
//修改包子的狀態為false沒有
baozi.flag = false;
//吃貨執行緒喚醒包子鋪執行緒---》生產包子
baozi.notify();
system.out.println("吃貨已經把" + baozi.pi + baozi.xian + "的包子吃完了");
system.out.println("----------------------------------");}}
}}
生產者消費者 生產者與消費者模式
一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...
生產者消費者執行緒
include include include includeusing namespace std typedef int semaphore 訊號量是一種特殊的整型變數 const int size of buffer 5 緩衝區長度 const unsigned short producers...
生產者消費者執行緒
該簡單生產者 消費者執行緒,屬於本人學習過程中的一段練習 如有不足,請指點 package com.lanqiao.demo3 author 大廣子 類說明 簡單的生產者,消費者執行緒 public class threadptcs catch interruptedexception e 退出 s...