商务合作:179001057@qq.com

用JAVA中的多线程示例生产者和消费者问题

xiaoxiao2022-06-24  3


某平台价值19860元的编程课程资料免费领取【点我领取】


package net.okren.java;//用JAVA中的多线程示例生产者和消费者问题class SynStack{ private String[] products = new String[10]; int index = 0; public String[] getProducts(){ return products; } public synchronized void push(String product){ if(index == products.length){ try{ wait(); }catch(InterruptedException e){ e.printStackTrace(); } } notifyAll(); products[index] = product; index++; } public synchronized String pop(){ if(index == 0){ try{ wait(); }catch(InterruptedException e){ e.printStackTrace(); } } notifyAll(); index--; return products[index]; }}class Producer implements Runnable{ SynStack stack; public Producer(SynStack stack){ this.stack = stack; } public void run(){ for(int i = 0; i < stack.getProducts().length; i++){ String product = "产品 " + i; stack.push(product); System.out.println("生产了 :" + product); try{ Thread.sleep(200); }catch(InterruptedException e){ e.printStackTrace(); } } }}class Consumer implements Runnable{ SynStack stack; public Consumer(SynStack stack){ this.stack = stack; } public void run(){ for(int i = 0; i < stack.getProducts().length; i++){ String product = stack.pop(); System.out.println("消费了: " + product); try{ Thread.sleep(500); }catch(InterruptedException e){ e.printStackTrace(); } } }}public class JavaTest { public static void main(String[] args){ SynStack stack = new SynStack(); Producer p = new Producer(stack); Consumer c = new Consumer(stack); Thread t1 = new Thread(p); Thread t2 = new Thread(c); t1.start(); t2.start(); }} 相关资源:Java多线程 生产者消费者模型实例详解

最新回复(0)