新手求解多线程信号灯同步的问题,求大神解决
package CoTest;
/**
* 信号灯
* 借助标志位
* @author yuche
*
*/
public class CoTest2 {
public static void main(String[] args) {
Bread1 bread=new Bread1();
new Producer1(bread).start();
new Consumer1(bread).start();
}
}
class Consumer1 extends Thread{
Bread1 bread;
public Consumer1(Bread1 bread) {
super();
this.bread = bread;
}
@Override
public void run() {
for(int i=1;i<100;++i) {
consume();
}
}
public synchronized void consume(){
if(bread.flag) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("消费");
bread.flag=!bread.flag;
this.notifyAll();
}
}
class Producer1 extends Thread{
Bread1 bread;
public Producer1(Bread1 bread) {
super();
this.bread = bread;
}
@Override
public void run() {
for(int i=1;i<100;++i) {
produce();
}
}
public synchronized void produce(){
if(!bread.flag) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("生产");
bread.flag=!bread.flag;
this.notifyAll();
}
}
//资源
class Bread1{
//为T表示面包在生产,为F表示可以消费了
boolean flag;
public Bread1() {
flag=true;
}
}
资源为Bread1,run里面有循环,编译运行就出一次结果,后面的就不运行了

...全文
相关推荐
java 多线程交通信号灯模拟过程详解
主要介绍了java 多线程交通信号灯模拟过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
探索互斥协议与死锁问题的解决方案
本文深入探讨了在计算机科学中互斥协议中的死锁问题,以及解决这些问题的方法。通过分析和比较不同的算法,我们了解了如何避免死锁,以及在出现死锁时如何通过重启等机制来解决。文章还涉及了有界模型检查在解决互斥问题中的应用,以及如何通过不变量和SAT求解器来优化问题解决过程。
红绿灯背后的数学:如何用Java算出“黄金绿灯时间“?
本文探讨了城市交通信号灯配时优化的数学原理与Java实现方法。文章首先分析了信号灯配时不合理导致的交通问题,指出精确计算绿灯时长的重要性。核心内容包括:1)基于M/M/1排队模型建立车流量数学模型,通过优化算法最小化总等待时间;2)使用Java实现信号灯优化控制器,采用梯度下降法动态调整绿灯时长。文中提供了完整的Java代码实现,包括信号灯控制器基类和优化控制器类,采用原子类保证线程安全,并详细解释了关键算法原理和实现细节。该方案可为城市智能交通系统提供理论支持和技术实现参考。
解决 错误 0x80070079: 信号灯超时时间已到 问题
向移动设备复制文件遇到“错误 0x80070079: 信号灯超时时间已到”问题时可以尝试这个解决方案,详情参考 http://support.microsoft.com/kb/976972 压缩包包括32位和64位两个版本,适合Windows 7。
CenaFilosofos:使用交通信号灯解决哲学家的晚餐问题
晚餐哲学家 使用交通信号灯实施哲学家的晚餐问题。


Java SE

