多线程08.生产者消费者单机版

package cp4;

import java.util.concurrent.locks.Lock;

public class PCV2 {
    private int i;
    private  volatile  boolean isProduced;

    final   private  Object LOCK=new Object();

    private  void consume(){
        synchronized (LOCK){
            //消费数据
            if(isProduced){
            System.out.println("c-->"+(i));
            LOCK.notify();//激活
                isProduced=false;
        }}
    }

    private  void produce(){
        synchronized (LOCK){
            //如果生产者消费完就等着,
            if(isProduced){
                try {
                    LOCK.wait();

                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }else{
                System.out.println("p-->"+(i++));
                isProduced=true;
                LOCK.notify();

            }
        }
    }
    public static void main(String[] args) {
        final PCV2 pcv = new PCV2();
        new Thread("P"){
            @Override
            public void run() {
                //
                while (true){
                    pcv.produce();
                }

            }
        }.start();

        new Thread("C"){
            @Override
            public void run() {
                //
                while (true){
                    pcv.consume();
                }

            }
        }.start();
    }


}

 

posted @ 2019-04-04 16:40  三号小玩家  阅读(116)  评论(0编辑  收藏  举报
Title
三号小玩家的 Mail: 17612457115@163.com, 联系QQ: 1359720840 微信: QQ1359720840