知识大全 Java线程通信的机制
Posted 商品
篇首语:或许是时间炖化了他们的异端,或许是岁月油炸了我的坚持。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java线程通信的机制相关的知识,希望对你有一定的参考价值。
Java线程通信的机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
package rejava review; import java util LinkedList; import java util List; /** * * @author Jay Chang * */ class Stack private List<Object> list = new LinkedList<Object>() /** * 出栈 * * @return */ public Object pop() return list remove(list size() ) /** * 将元素压入栈 * * @param obj */ public void push(Object obj) list add(list size() obj) public int size() return list size() /** * * @author Jay Chang * */ class Producer extends Thread private Stack stack; public Stack getStack() return stack; /** * * @param stack */ public void setStack(Stack stack) this stack = stack; /** * 生产者生产商品 当商品栈满时 通知消费者消费商品 */ public void produce() for (int i = ; i < ; i++) // 同步stack synchronized (stack) System out println( producer get the lock ) //这里指定存放商品的商品栈的最大容量为 while (stack size() == ) try //将生产者线程持有stack对象的锁释放 并将生产者线程放到stack对象的等待池中 stack wait() catch (InterruptedException e) e printStackTrace() // 模拟生产者生产商品过程所需的时间 try Thread sleep( ) catch (InterruptedException e) e printStackTrace() String goods = goods + stack size() //将生产的商品放到存放商品的商品栈中 stack push(goods) System out println( producer product + goods) //唤醒在stack对象等待池中的等待的所有线程 stack notifyAll() public void run() produce() class Consumer extends Thread private Stack stack; public Stack getStack() return stack; public void setStack(Stack stack) this stack = stack; /** * * 消费者消费商品 当商品栈中为空时通知生产者生产商品 */ public void consume() for (int i = ; i < ; i++) synchronized (stack) System out println( consumer get the lock ) while (stack size() == ) try stack wait() catch (InterruptedException e) // TODO Auto generated catch block e printStackTrace() // 模拟消费者消费商品 所需的时间 try Thread sleep( ) catch (InterruptedException e) // TODO Auto generated catch block e printStackTrace() Object obj = stack pop() System out println( cosumer consume + obj) public void run() consume() public class Test public static void main(String[] args) Stack stack = new Stack() Consumer consumer = new Consumer() consumer setStack(stack) Producer producer = new Producer() producer setStack(stack) Producer producer = new Producer() producer setStack(stack) consumer start() producer start() producer start() cha138/Article/program/Java/gj/201311/27529相关参考