知识大全 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

相关参考