java多线程模拟红绿灯案例
2024-09-17 00:39:21
代码Lighter.java:
package pack1;
/**
* 灯线程
* @author Administrator
*
*/
public class Lighter extends Thread{
//代表灯当前的状态(这里只考虑红绿两种状态)
public String state;
public void run(){
while (true){
try {
//初始状态设为红灯,且红灯时常为10s
state = "red";
System.out.println("lighter:现在是红灯,静止车辆通行");
Thread.sleep(10*1000);
//10s后灯变绿,设绿灯时间位5秒
state = "green";
System.out.println("lighter:现在变绿灯了,车辆可以通行了。");
Lighter.sleep(5*1000);
} catch (InterruptedException e) {
System.out.println("出错了:"+e);
}
}
}
}
代码Car.java
package pack1;
/**
* 车辆线程
* @author Administrator
*
*/
public class Car extends Thread{
String name="";
//灯作为私有变量,车辆根据灯的状态决定是否要停止
private Lighter lighter;
public Car(String name,Lighter l){
this.name=name;
this.lighter=l;
}
public void run(){
if (lighter.state.equals("red")){
System.out.println(this.name+":等待中");
}else{ System.out.println(this.name+":通过了红绿灯");
}
}
}
测试代码RglightTest.java
package pack1;
/**
* 红绿灯测试代码
* @author Administrator
*
*/
public class RglightTest {
public static void main(String[] args) throws InterruptedException {
Lighter l=new Lighter();
//红绿灯开始运行
l.start();
//生成20个车辆,依次通过红绿灯
for(int i=0;i<20;i++){
Car c=new Car("car"+i+1,l);
//当前车辆睡眠1s
c.sleep(1000);
c.start();
}
}
}
最新文章
- 帆软报表FineReport中数据连接之Weblogic配置JNDI连接
- mysql日期格式化
- Java并发编程底层实现原理 - volatile
- Wordpress制作sidebar.php
- tomcat 7 中的类加载器学习
- 图的连通性:有向图强连通分量-Tarjan算法
- Linux文件系统中硬链接和软链接的区别 (转)
- 开源Android-PullToRefresh下拉刷新源代码分析
- 原生 table css实现操作按钮固定右侧及底部滚动 IE不会卡死
- XPath、CSS 选择器 -学习地址
- centos 6.5 安装 tomcat8 及性能优化_虚拟主机
- Spring Boot微服务如何集成fescar解决分布式事务问题?
- 学习用Node.js和Elasticsearch构建搜索引擎(5):mac本机部署canal
- [转] linux学习第四十四篇:Nginx安装,Nginx默认虚拟主机,Nginx域名重定向
- 异步IO(协程,消息循环队列)
- three.js学习:初学three.js,从立方体开始
- Arctic Network---poj2349 最小生成树
- MyEclipse移动开发教程:迁移HTML5移动项目到PhoneGap(二)
- Docker 私有registry出现的证书问题
- 如何使用Replace Pioneer批量查找和替换并提取指定字符串