生产者与消费者Java实现
Container类
package multithread.producerandconsumer;public class Container {static int size=5;int index=0;String [] container=new String[size];synchronized public void add(String production){if(index>=size){try {wait();} catch (InterruptedException e) {e.printStackTrace();}}container[index]=production;System.out.println("P-"+Thread.currentThread().getName()+" produce "+container[index]+" production");index++;notify();}synchronized public void remove(){if(index==0){try {wait();} catch (InterruptedException e) {e.printStackTrace();}}index--;System.out.println("C-"+Thread.currentThread().getName()+" consume "+container[index]+" production");container[index]=null;notify();}}Producer类
package multithread.producerandconsumer;public class Producer implements Runnable {Container container=null;Producer(Container container){this.container=container;}@Overridepublic void run() {long proId=0;while(true){proId++;container.add(proId+"NO.");if(proId==10)break;}}}Consumer类
package multithread.producerandconsumer;public class Consumer implements Runnable {Container container=null;Consumer(Container container){this.container=container;}@Overridepublic void run() {for(int i=0;i<10;i++){try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}container.remove();}}}测试类
package multithread.producerandconsumer;public class TestProduceAndConsume {public static void main(String[] args) {Container container=new Container();Producer prod=new Producer(container);Consumer consumer=new Consumer(container);new Thread(prod).start();new Thread(consumer).start();//new Thread(consumer).start();//new Thread(consumer).start();}}