java多线程模拟红绿灯案例
代码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();
}
}
}
java多线程模拟红绿灯案例的更多相关文章
- java多线程模拟生产者消费者问题,公司面试常常问的题。。。
		package com.cn.test3; //java多线程模拟生产者消费者问题 //ProducerConsumer是主类,Producer生产者,Consumer消费者,Product产品 // ... 
- java多线程模拟停车系统
		import java.util.Random; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent ... 
- 使用Redis中间件解决商品秒杀活动中出现的超卖问题(使用Java多线程模拟高并发环境)
		一.引入Jedis依赖 可以新建Spring或Maven工程,在pom文件中引入Jedis依赖: <dependency> <groupId>redis.clients< ... 
- 用java多线程模拟数据库连接池
		模拟一个ConnectionDriver,用于创建Connection package tread.demo.threadpool; import java.lang.reflect.Invocati ... 
- java多线程 生产者消费者案例-虚假唤醒
		package com.java.juc; public class TestProductAndConsumer { public static void main(String[] args) { ... 
- java多线程模拟停车位问题
		/** * */ package Synchronized; /** * @author libin * */ public class CarTest { public static void ma ... 
- java多线程模拟龟兔赛跑
		让乌龟和兔子在同一个赛道从1开始跑到100,看看谁更快. public class Racer implements Runnable{ private static String winner;// ... 
- Java多线程同步 synchronized 关键字的使用
		代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A, ... 
- Java多线程-并发协作(生产者消费者模型)
		对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的.就像学习每一门编程语言一样,Hello World!都是最经典的例子. 实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓 ... 
随机推荐
- [数据挖掘课程笔记]人工神经网络(ANN)
			人工神经网络(Artificial Neural Networks)顾名思义,是模仿人大脑神经元结构的模型.上图是一个有隐含层的人工神经网络模型.X = (x1,x2,..,xm)是ANN的输入,也就 ... 
- MongoDB学习笔记(2):数据库操作及CURD初步
			MongoDB学习笔记(2):数据库操作及CURD 数据库操作 创建数据库 首先MongoDB中数据库的创建和数据库的切换都是使用命令,USE DATABASE,如果要切换的数据库不存在则会进行创建, ... 
- 原来 Set 集合也可以排序
			Java 集合类主要由两个接口派生而出: Collection 和 Map.在 Collection 集合中,我们经常用到的是 List 集合和 Map 集合,而 Set 集合出场的机会就相对比较的少 ... 
- Java锁机制-重入锁
			锁的种类: 读写锁 悲观锁 乐观锁 CSA无锁 自旋锁 AQS 非公平锁 公平锁 互斥锁 排它锁 分布式锁(redis实现 和 zk实现) 轻量级锁(lock),重量级锁(synchron ... 
- codeforces 702D D. Road to Post Office(数学)
			题目链接: D. Road to Post Office time limit per test 1 second memory limit per test 256 megabytes input ... 
- Asterisk func group
			Synopsis Gets, sets or clears the channel group. Each channel can only be member of exactly one grou ... 
- linux 查看某进程 并杀死进程 ps grep kill
			Linux 中使用top 或 ps 查看进程使用kill杀死进程 1.使用top查看进程: $top 进行执行如上命令即可查看top!但是难点在如何以进程的cpu占用量进行排序呢? cpu占用量排序执 ... 
- PHPstorm相同变量标识
			setting-> plugins-> Browse Repositories 输入BrowseWordAtCaret 搜索,安装,然后重启 
- 如何使用最简单的方法将一个已经存在的工程中使用 cocaPodfile
			在网上搜索的使用 cocaPods 安装一些优秀的框架,搜索的博客大多步骤都是非常的麻烦,这里的方法非常的简单,本篇仅仅作为以后备用. 第一步:首先找到我们的工程,在终端中输入 cd 拖入已经存在 ... 
- chrome提示您的连接不是私密连接
			在实验室登陆qq邮箱总是提示连接不是私密,感觉是上级路由器配置的问题,或者是被监控了.反正邮箱也没啥东西,干脆直接删除这个提示.解决方法如下,测试可用. 解决:我想打不开百度网页是因为chrome强制 ... 
