7、Lock的生产者消费者问题

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这个监视器,(随机变精准唤醒线程)

猜你喜欢

转载自blog.csdn.net/logtcm4/article/details/127851819
今日推荐