Lock的生产者消费者问题
Lock:(这就是我们juc下的)
*Await
*signal
还有Condition来当监视器
官方文档使用方式:(要先用锁.new一个监视对象(Condition)然后用这个对象去等待/通知)
其中lock代替了syn,而condition代替了前面的wait这些Object方法,是一个监视器
代码实现
第一步:将前面的syn流程更改
第二步:先创建一个锁(new ReentranLock)
第三步:创建一个condition监视器对象(然后才能用这个对象去等待或者唤醒)
第四步:将传统syn之前的等待和唤醒全部用lock的condition监视器下的等待和唤醒全部(await/signalAll)
第五步:上面我们写的是我们的业务代码,记住口诀先锁,再业务代码(try catch),在释放锁
下面的-1也是一样
第六步:用多线程测试下
还是有个小问题,这里是没有到我们想要按我们想要的指定顺序去唤醒输出(这里演示的还是一个简单的消费者生产者问题)所以后面我们还要学习这个Condition这个监视器,(随机变精准唤醒线程)