用Java 写个模拟红绿灯 的层序
时间: 2024-05-08 14:16:40 浏览: 15
以下是使用Java编写的模拟红绿灯层序代码示例:
```
import java.util.concurrent.*;
public class TrafficLightSimulation {
public static void main(String[] args) throws InterruptedException {
ExecutorService executor = Executors.newSingleThreadExecutor();
Light light = new Light();
executor.execute(light);
TimeUnit.SECONDS.sleep(10); //模拟10秒钟的红绿灯变换
light.setStopped(true); //关闭交通灯
executor.shutdown();
}
}
class Light implements Runnable {
private boolean isStopped = false;
public void setStopped(boolean stopped) {
isStopped = stopped;
}
@Override
public void run() {
try {
while (!isStopped) {
System.out.println("绿灯亮了,可以通行!");
TimeUnit.SECONDS.sleep(5);
System.out.println("黄灯亮了,请注意减速!");
TimeUnit.SECONDS.sleep(2);
System.out.println("红灯亮了,请停车等待!");
TimeUnit.SECONDS.sleep(5);
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
```
这个程序使用Java的ExecutorService和Runnable接口来实现交通灯的模拟。TrafficLightSimulation类创建了一个单线程的ExecutorService对象,并将其传递给Light类的实例。
Light类实现了Runnable接口,它包含一个boolean类型的isStopped变量,用于控制交通灯是否关闭。在run()方法中,使用while循环模拟红绿灯的变换过程。当isStopped为false时,循环执行亮绿灯、黄灯、红灯的操作,每种灯亮5秒、2秒和5秒。
TrafficLightSimulation类的main()方法模拟了10秒钟的红绿灯变换,然后关闭交通灯并关闭ExecutorService。