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

xiaoxiao2022-06-24  83

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多线程 生产者消费者模型实例详解
转载请注明原文地址: https://www.6miu.com/read-4955895.html

最新回复(0)