首页 > 代码库 > 生产消费
生产消费
线程同步
class SynStack { private char data[] = new char[6]; private int cnt = 0;// 表示数组有效元素的个数 public synchronized void push(char ch) { while (data.length == cnt) { try { this.wait(); } catch (Exception e) { } } this.notify(); data[cnt] = ch; cnt++; System.out.println("生产线程正在生产第" + cnt + "个产品,该产品是:" + ch); } public synchronized char pop() { char ch; while (0 == cnt) { try { this.wait(); } catch (Exception e) { } } this.notify(); ch = data[cnt - 1]; System.out.println("消费线程正在消费第" + cnt + "个产品,该产品是:" + ch); --cnt; return ch; } } class Producer implements Runnable { private SynStack ss = null; public Producer(SynStack ss) { this.ss = ss; } public void run() { char ch; for (int i = 0; i < 26; i++) { try { Thread.sleep(100); } catch (Exception e) { } ch = (char) (‘a‘ + i); ss.push(ch); } } } class Consumer implements Runnable { private SynStack ss = null; public Consumer(SynStack ss) { this.ss = ss; } public void run() { for (int i = 0; i < 26; i++) { try { Thread.sleep(100); } catch (Exception e) { } ss.pop(); } } } public class Test { public static void main(String[] args) { SynStack ss = new SynStack(); Producer p = new Producer(ss); Consumer c = new Consumer(ss); Thread t1 = new Thread(p); Thread t2 = new Thread(c); t1.start(); t2.start(); } }
生产消费
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。