生产者与消费者

写一个生产者和消费者,生产--消费--生产--消费,这样子循环。

public class ShareData {

    private volatile  int num=0;
    private Lock lock=new ReentrantLock();
    private Condition condition=lock.newCondition();

    public void  increment(){
        try {
            lock.lock();
            while (num!=0){
                condition.await();
            }
            num++;
            System.out.println("线程--"+ Thread.currentThread().getName()+"执行了增加操作,num-->"+num);
            condition.signalAll();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            lock.unlock();
        }
    }

    public void  decrement(){
        try {
            lock.lock();
            while (num==0){
                condition.await();
            }
            num--;
            System.out.println("线程--"+ Thread.currentThread().getName()+"执行了减少操作,num-->"+num);
            condition.signalAll();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            lock.unlock();
        }
    }
}
    public static void main(String[] args) {
        ShareData data=new ShareData();
        for (int i=0;i<5;i++){
            new Thread(()->{
                data.increment();
            },"AAA").start();
        }
        for (int i=0;i<5;i++){
            new Thread(()->{
                data.decrement();
            },"BBB").start();
        }
    }

2个线程,一个生产,一个消费。生产者increment 之后,唤醒消费者,消费者开始消费。

你可能感兴趣的:(java)