码迷,mamicode.com
首页 > 其他好文 > 详细

demo生产与消费

时间:2017-10-26 17:44:10      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:system   nal   产品   表示   com   描述   log   []   .com   

生产与消费问题描述:

  我们需要先生产商品再进行消费。当我们的生产商生产完产品了,通知我们消费者我们有产品了,可以来消费了。消费者就去消费,当消费完了,就要通知我们的生产商去生产产品。

生产与消费问题实现:

  利用线程中的wait()与notify()之间的通讯来实现。wait()可以释放锁的、notify()是不释放锁的。

demo:

package com.communication;

/**
 * 生产与消费问题
 * @author jingxuan
 *
 */
public class Produce {

    //
    private final Object lock=new Object();
    
    //作为是否生产完成标识
    private boolean sign=false;
    
    //生产者
    public void product(){
        
        synchronized (lock) {
            while(!sign){
                //标识消费完了,该生产了。
                sign=true;
                try {
                    System.out.println("生产完了,赶紧来消费");
                    lock.wait();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
            lock.notify();
        }
    }
    
    //消费者
    public void customer(){
        
        synchronized (lock) {
            
            while(sign){
                //表示有产品了
                sign=false;
                try {
                    System.out.println("消费完了,赶紧生产");
                    lock.wait();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
            lock.notify();
        }
    }
    
    public static void main(String[] args) {
        
        final Produce p=new Produce();
        
        while(true){
            new Thread( new Runnable() {
                
                @Override
                public void run() {
                    
                        p.product();

                }
            }).start();
            
            new Thread( new Runnable() {
                
                @Override
                public void run() {
                    
                        p.customer();

                }
            }).start();
        }

    }
    
}

 

demo生产与消费

标签:system   nal   产品   表示   com   描述   log   []   .com   

原文地址:http://www.cnblogs.com/jxgo/p/7737842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!