国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

使用wait和notify實現經典生產者消費者問題

2019-11-08 20:08:30
字體:
來源:轉載
供稿:網友

經典的操作系統ipC問題

wait方法; //釋放持有鎖,并掛起當前線程notify方法; //隨機喚醒使用wait方法的線程

代碼:

package com.sdkd.hms;import javax.naming.Context;import java.util.ArrayList;import java.util.Stack;/** * Created by hms on 2017/2/15. */public class WakeOrSleep { public static final int N = 10; public static int count = 0; public static Stack<Integer> stack = new Stack(); public static void main(String[] args) { PRoducer producer = new Producer(); Consumer consumer = new Consumer(); producer.start(); consumer.start(); }}class Producer extends Thread{ @Override public void run() { while (true) { int item = (int)(Math.random() * 100); if(WakeOrSleep.count == WakeOrSleep.N) { System.out.println("緩沖區已經滿了,等待消費者喚醒"); try { synchronized (WakeOrSleep.stack) { WakeOrSleep.stack.wait(); } } catch (InterruptedException e) { e.printStackTrace(); } } WakeOrSleep.stack.push(item); System.out.println("緩沖區添加了數據項 " + item); WakeOrSleep.count += 1; if(WakeOrSleep.count == 1){ synchronized (WakeOrSleep.stack) { WakeOrSleep.stack.notify(); } } } }}class Consumer extends Thread{ @Override public void run() { while (true) { if(WakeOrSleep.count == 0){ try { System.out.println("緩沖區已空,等待生產者喚醒"); synchronized (WakeOrSleep.stack) { WakeOrSleep.stack.wait(); } } catch (InterruptedException e) { e.printStackTrace(); } } int item = WakeOrSleep.stack.pop(); WakeOrSleep.count -= 1; if(WakeOrSleep.count == WakeOrSleep.N - 1) { synchronized (WakeOrSleep.stack) { WakeOrSleep.stack.notify(); } } System.out.println("緩沖區中消費了 " + item); } }}/**緩沖區已空,等待生產者喚醒緩沖區添加了數據項 45緩沖區中消費了 45緩沖區已空,等待生產者喚醒緩沖區添加了數據項 47緩沖區中消費了 47緩沖區已空,等待生產者喚醒緩沖區添加了數據項 84緩沖區添加了數據項 59緩沖區添加了數據項 81...*/
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仙游县| 报价| 孟津县| 辽中县| 绍兴县| 沅陵县| 古浪县| 张家口市| 铅山县| 滦平县| 盖州市| 五原县| 南丰县| 高要市| 浦城县| 香河县| 丰宁| 海晏县| 中宁县| 惠州市| 天等县| 古交市| 龙井市| 崇信县| 科技| 吕梁市| 天等县| 田林县| 美姑县| 吐鲁番市| 巫山县| 金川县| 龙川县| 台山市| 宜都市| 富锦市| 博客| 青阳县| 八宿县| 延吉市| 上犹县|