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!都是最经典的例子. 实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓 ...
随机推荐
- jQuery param()作用与使用方法
$.param()方法是serialize()方法的核心,用来对一个数组或对象按照key/value进行序列化. $.param(obj) 返回 :string: 说明:将jquery对象按照name ...
- 在iOS平台使用ffmpeg解码h264视频流(转)
在iOS平台使用ffmpeg解码h264视频流,有需要的朋友可以参考下. 对于视频文件和rtsp之类的主流视频传输协议,ffmpeg提供avformat_open_input接口,直接将文件路径或UR ...
- HZNU 2154 ldh发奖金【字符串】
题目链接 http://acm.hznu.edu.cn/OJ/problem.php?id=2154 思路 先判断不能拆分的情况 以为需要拆分成两个正整数 所以我们可以知道 只有个位的数字 是不能够拆 ...
- object-c中的assign,retain,copy,atomic,nonatomic,readonly,readwrite以及strong,weak
assign:指定setter方法用简单的赋值,这是默认操作.你可以对标量类型(如int)使用这个属性.你可以想象一个float,它不是一个对象,所以它不能retain.copy.assign指定se ...
- Android 启动过程介绍【转】
本文转载自:http://blog.csdn.net/yangwen123/article/details/8023654 一般开机过程大致可以分为三个大阶段: 1. OS级别,由bootloader ...
- LightOJ1220 —— 质因数分解
题目链接:https://vjudge.net/problem/LightOJ-1220 1220 - Mysterious Bacteria PDF (English) Statistics ...
- Memory Notification: Library Cache Object loaded into SGA
问题现象: 数据库服务器可以ping通,但SSH连接不了:应用.plsqldeveloper 也都连接不了.事情到了这个地步,只能重启服务器. 服务器环境:oracle10.2.0.1 +rhel5. ...
- codeforces 702C C. Cellular Network(水题)
题目链接: C. Cellular Network time limit per test 3 seconds memory limit per test 256 megabytes input st ...
- Swift Optional Chaining
Optional Chaining介绍 关于「optional chaining」,<The Swift Programming Language>是这么描述的: Optional cha ...
- NOI2017退役记
Day1 全世界都200+我162,考场上fread和fwrite写挂了直接删了,然后就被卡了48也是没谁了. Day2 2-SAT写挂,就没有然后了. 明明退役前一直都在做自己最想做的事情,连这就是 ...