Tha*_*han 3 java multithreading volatile runnable
我将模拟交通灯系统.我创建了Road类,它扩展了JFrame并实现了Runnable.
在run()方法中,我添加了逻辑来增加每辆车的Y位置,现在它正在模拟汽车的运动.但是现在我需要在移动汽车之前检查交通信号灯的状态.
这是我的TrafficLight类,
import java.util.Random;
public class TrafficLight implements Runnable {
volatile boolean stop;
public TrafficLight(boolean stop) {
this.stop = stop;
}
@Override
public void run() {
Random randomGenerator = new Random();
while (true) {
if (stop) {
stop = false; //change current status
} else {
stop = true; //change current status
}
try {
Thread.sleep(2000 + randomGenerator.nextInt(2000));
} catch (Exception ex) {
System.out.println("error");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法从我的Road Class 检查这个volatile变量stop.
如果没有,请建议我做另一个解决方案.
谢谢.
实现一个访问停止.
public class TrafficLight implements Runnable {
volatile boolean stop;
// Irrelevant code
public boolean isStop() {
return stop;
}
}
Run Code Online (Sandbox Code Playgroud)
收到TrafficLight的Road类的构造函数,并用它来获得访问stop变量
public class Road implements Runnable {
private TrafficLight trafficLight;
public Road (TrafficLight trafficLight) {
this.trafficLight = trafficLight;
}
@Override
public void run() {
// Irrelevant code
if(trafficLight.isStop()) {
// do something
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8217 次 |
| 最近记录: |