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 + -
显示快捷键?