之前写过一篇生产者与消费者的管程法
管程法
对于一些思路可以先看一下这篇博客
什么是信号灯法
我们知道,我们过马路的时候是需要看信号灯的(可能有人不看)当绿灯亮的时候,行人可以走,红灯亮的时候,行人不可以走,车子便可以走了,那么同理,信号灯法就是这个意思,我们需要定一个变量来做信号灯,这里推荐定义Boolean,那么话不多说,我们直接上代码,为了方便大家理解,我们把对象写成,年轻人,老人,年轻人去洗手间方便,方便出来后老人开始打扫卫生间。
代码一览(年轻人)
class youngMan implements Runnable
{
WC wc;//定义一个洗手间类,后面会写
public youngMan(WC wc) {
this.wc = wc;
}
@Override
public void run() {
for (int i = 1; i <= 20; i++) {
if(i%2==0)//设计一个分歧条件
{
try {
this.wc.go_to_WC("大手");//把name传入wc
} catch (InterruptedException e) {
e.printStackTrace();
}
}
else {
try {
this.wc.go_to_WC("小手");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
代码一览(老人)
class oldMan implements Runnable
{
WC wc;
public

本文介绍了使用信号灯法解决生产者与消费者问题,通过Java代码示例解释了如何设置信号灯(Boolean变量)来协调不同角色(年轻人、老人、洗手间)的同步。文章提供详细代码及运行结果,强调正确锁定的重要性,并建议读者结合前文(管程法)深入理解。
最低0.47元/天 解锁文章
892

被折叠的 条评论
为什么被折叠?



