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

xiaoxiao2024-12-08  18

class Producer implements Runnable { private SyncStack stack; public Producer(SyncStack 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 { private SyncStack stack; public Consumer(SyncStack 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(1000); } catch(InterruptedException e) { e.printStackTrace(); } } } } class SyncStack { private String[] products = new String[10]; private int index; public synchronized void push(String product) { if(index==product.length()) { try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } notify(); products[index]=product; index++; } public synchronized String pop() { if(index==0) { try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } notify(); index--; String product = products[index]; return product; } public String[] getProducts() { return products; } } public class TestProducerConsumer { public static void main(String[] args) { SyncStack stack=new SyncStack(); Producer p=new Producer(stack); Consumer c=new Consumer(stack); new Thread(p).start(); new Thread(c).start(); } } 相关资源:Java多线程 生产者消费者模型实例详解
转载请注明原文地址: https://www.6miu.com/read-5020891.html

最新回复(0)