produce_consume.java
来自「java实现生产者与消费者双线程问题 在JDK6.0上测试通过」· Java 代码 · 共 86 行
JAVA
86 行
import java.util.*;class HoldInt { private int sharedInt; private boolean writeAble=true; private LinkedList<Integer> list = new LinkedList<Integer>(); public synchronized void set(int val) { while(!writeAble || list.size() >= 20) { try { System.out.println("Produce Waiting......"); wait(); } catch(InterruptedException e){} } writeAble=false; list.addLast(val); System.out.println("Produce Finished......"+val); notify(); } public synchronized int get() { while(writeAble || list.size() == 0) { try { System.out.println("Consume Wainting......"); wait(); } catch(InterruptedException e){} } sharedInt = list.getFirst().intValue(); list.removeFirst(); writeAble=true; System.out.println("Consume Finished......"+sharedInt); notify(); return sharedInt; } } class ProduceInt extends Thread { private HoldInt hi; public ProduceInt(HoldInt hiForm) { hi=hiForm; } public void run() { for(int i=1;i<=400;i++) { hi.set(i); } }} class ConsumeInt extends Thread { private HoldInt hi; public ConsumeInt(HoldInt hiForm) { hi=hiForm; } public void run() { for(int i=1;i<=400;i++) { hi.get(); } }} class produce_consume { public static void main(String args[]) { HoldInt h=new HoldInt(); ProduceInt p=new ProduceInt(h); ConsumeInt c=new ConsumeInt(h); p.start(); c.start(); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?