代码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. appium导入哪些java模块

    简单介绍 讲解一个appium测试脚本需要导入哪些java模块. 导入的java模块 明确两点信息: 一个脚本需要讲清楚测试环境:1.自动化平台方面,测试的平台是什么(appium或者selendro ...

  2. tomcat正常启动,但是java项目没有启动原因

    右键项目,选择properties,查看该属性配置的是否正确

  3. HDFS namenode 高可用(HA)搭建指南 QJM方式 ——本质是多个namenode选举master,用paxos实现一致性

    一.HDFS的高可用性 1.概述 本指南提供了一个HDFS的高可用性(HA)功能的概述,以及如何配置和管理HDFS高可用性(HA)集群.本文档假定读者具有对HDFS集群的组件和节点类型具有一定理解.有 ...

  4. javaScrpit中NaN的秘密

    NaN,不是一个数字,是一种特殊的值来代表不可表示的值,使用typeof或其他任何与之比较的处理方式,‘NaN’则会引起一些混乱, 一些操作会导致NaN值的产生.这里有些例子: Math.sqrt(- ...

  5. shell之cut和tr 的命令的使用

    [root@data-1-3 ~]# head /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin ...

  6. Relative atomic mass

    Relative atomic mass Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  7. vue-touchjs

    支持vue2.0的面向指令的touch指令,基于touchjs(原百度实现的移动端手势库) vue-touchjs支持三种stopPropagation的方式: 1 .stop修饰符 2  事件han ...

  8. web缓存概述

    缓存无处不在,所展示出的仅仅是服务器端的缓存,我们从细节层面一层层分析 但是在此之前,我们先要知道什么是缓存与为什么要使用缓存,是时候百度一波喽~ 缓存就是数据交换的缓冲区(称作Cache),当某一硬 ...

  9. 四、Chrome开发者工具详解(4)-Profiles面板

    摘自: http://www.cnblogs.com/charliechu/p/6003713.html

  10. chrome提示您的连接不是私密连接

    在实验室登陆qq邮箱总是提示连接不是私密,感觉是上级路由器配置的问题,或者是被监控了.反正邮箱也没啥东西,干脆直接删除这个提示.解决方法如下,测试可用. 解决:我想打不开百度网页是因为chrome强制 ...