代码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多线程模拟红绿灯案例的更多相关文章

  1. java多线程模拟生产者消费者问题,公司面试常常问的题。。。

    package com.cn.test3; //java多线程模拟生产者消费者问题 //ProducerConsumer是主类,Producer生产者,Consumer消费者,Product产品 // ...

  2. java多线程模拟停车系统

    import java.util.Random; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent ...

  3. 使用Redis中间件解决商品秒杀活动中出现的超卖问题(使用Java多线程模拟高并发环境)

    一.引入Jedis依赖 可以新建Spring或Maven工程,在pom文件中引入Jedis依赖: <dependency> <groupId>redis.clients< ...

  4. 用java多线程模拟数据库连接池

    模拟一个ConnectionDriver,用于创建Connection package tread.demo.threadpool; import java.lang.reflect.Invocati ...

  5. java多线程 生产者消费者案例-虚假唤醒

    package com.java.juc; public class TestProductAndConsumer { public static void main(String[] args) { ...

  6. java多线程模拟停车位问题

    /** * */ package Synchronized; /** * @author libin * */ public class CarTest { public static void ma ...

  7. java多线程模拟龟兔赛跑

    让乌龟和兔子在同一个赛道从1开始跑到100,看看谁更快. public class Racer implements Runnable{ private static String winner;// ...

  8. Java多线程同步 synchronized 关键字的使用

    代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A, ...

  9. Java多线程-并发协作(生产者消费者模型)

    对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的.就像学习每一门编程语言一样,Hello World!都是最经典的例子. 实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓 ...

随机推荐

  1. 解决Error:Unable to find method 'org.gradle.api.internal.project.ProjectInternal.

    错误描述今天在Github上面下载了一份代码,然后导入到Android Studio中直接报错误 错误描述如下: Error: Unable to find method ‘org.gradle.ap ...

  2. Oracle序列更新

    Oracle 数据库的时候,有时候会选择使用自增序列作为主键.但是在开发过程中往往会遇到一些不规范的操作,导致表的主键值不是使用序列插入的.这样在数据移植的时候就会出现各种各样的问题.当然数据库主键不 ...

  3. IOC入门1

    1.配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:/ ...

  4. touch实现滑动删除

    请用chrome手机模式查看或者在手机上查看(转载请注明出处) <!DOCTYPE html> <html> <head> <meta charset=&qu ...

  5. UniCode转码

    <script type="text/javascript"> var GB2312UnicodeConverter = { ToUnicode: function ( ...

  6. 谈谈javaScript

    谈谈javaScript  (杰我学习) 一. 什么是JavaScript       人们通常所说的JavaScript,其正式名称为ECMAScript.这个标准由ECMA组织发展和维护.ECMA ...

  7. CISCO-端口安全

    1.MAC地址与端口绑定,当发现主机的MAC地址与交换机上指定的MAC地址不同时 ,交换机相应的端口将down掉.当给端口指定MAC地址时,端口模式必须为access或者Trunk状况. 3550-1 ...

  8. CISCO-配置SSH

    PC直接连在交换机端口上,PC的ip地址是:192.168.1.1/24 在交换机的操作步骤如下: 1.设置交换机管理ip Switch#conf t Switch(config)#int vlan ...

  9. Android-Styles and Themes [From API Guide]

    This blog was opened 5 months ago and it has 57 posts now,but the poor thing is by now no one has co ...

  10. js 字符串拼接、截取、查找...

    函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: let str=”020-88888888-03”; let arr=str.split(”-”); console ...