java红绿灯程序
本篇文章给大家带来《java红绿灯程序》,石家庄人才网对文章内容进行了深度展开说明,希望对各位有所帮助,记得收藏本站。
Java红绿灯程序是一个经典的并发编程练习题,它模拟了现实世界中交通信号灯的运作机制。程序需要控制三个灯(红、黄、绿)的亮灭顺序,以确保交通安全和秩序。本文将介绍使用Java语言实现红绿灯程序的两种常见方法:线程和定时器。
方法一:使用线程
线程是操作系统中独立执行的单元,可以并发执行不同的任务。在红绿灯程序中,我们可以为每个灯创建一个线程,并使用线程的休眠和唤醒机制来控制灯的亮灭。
代码示例:
```java// 定义交通灯颜色枚举enum TrafficLightColor { RED, YELLOW, GREEN}// 交通灯类class TrafficLight implements Runnable { private TrafficLightColor color; public TrafficLight(TrafficLightColor initialColor) { this.color = initialColor; } public synchronized void waitForGreen() { while (color != TrafficLightColor.GREEN) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } public synchronized void changeColor() { switch (color) { case RED: color = TrafficLightColor.GREEN; break; case YELLOW: color = TrafficLightColor.RED; break; case GREEN: color = TrafficLightColor.YELLOW; break; } notifyAll(); } @Override public void run() { while (true) { System.out.println("当前颜色:" + color); try { switch (color) { case RED: Thread.sleep(3000); // 红灯亮3秒 break; case YELLOW: Thread.sleep(1000); // 黄灯亮1秒 break; case GREEN: Thread.sleep(2000); // 绿灯亮2秒 break; } } catch (InterruptedException e) { e.printStackTrace(); } changeColor(); } }}// 测试类public class TrafficLightDemo { public static void main(String[] args) { TrafficLight trafficLight = new TrafficLight(TrafficLightColor.RED); Thread thread = new Thread(trafficLight); thread.start(); // 模拟车辆等待绿灯 try { Thread.sleep(5000); trafficLight.waitForGreen(); System.out.println("绿灯亮了,车辆可以通过!"); } catch (InterruptedException e) { e.printStackTrace(); } }}```
方法二:使用定时器
定时器可以周期性地执行任务。在红绿灯程序中,我们可以使用定时器来定期切换灯的颜色。
代码示例:
```javaimport java.util.Timer;import java.util.TimerTask;// 交通灯类class TrafficLight { private String color; public TrafficLight() { this.color = "红灯"; } public void changeColor() { switch (color) { case "红灯": color = "绿灯"; break; case "黄灯": color = "红灯"; break; case "绿灯": color = "黄灯"; break; } System.out.println("当前颜色:" + color); }}// 测试类public class TrafficLightDemo { public static void main(String[] args) { TrafficLight trafficLight = new TrafficLight(); Timer timer = new Timer(); // 创建定时任务,每隔一段时间切换一次颜色
- 上一篇:易语言透视辅助教程
- 下一篇:php高级工程师需要具备什么能力
版权声明:《java红绿灯程序》来自【石家庄人才网】收集整理于网络,不代表本站立场,所有图片文章版权属于原作者,如有侵略,联系删除。
https://www.ymil.cn/baibaoxiang/3138.html