借助标志位

public class light {

public static void main(String[]args)

{

Tv tv=new Tv();

new Player(tv).start();

new Watcher(tv).start();

}

}

//生产者 演员

class Player extends Thread{

Tv tv;

public Player(Tv tv)

{

this.tv=tv;

}

public void run()

{

for(int i=0;i<20;i++)

{

if(i%2==0)

{

this.tv.play("偶不变");

}else

{

this.tv.play("奇变");

}

}

}

}

//消费者 观众

class Watcher extends Thread{

Tv tv;

public Watcher(Tv tv)

{

this.tv=tv;

}

public void run()

{

for(int i=0;i<20;i++)

{

this.tv.watch("无聊");

}

}

}

//同一个资源 电视

class Tv {

String voice;

//信号灯

//为真则演员表演,观众等待

//为假则观众观看,演员等待

boolean flag=true;

//表演

public synchronized void play(String voice)

{

if(!flag)

{

try {

this.wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.println("表演了:"+voice);

this.voice=voice;

//表演后

this.notifyAll();

this.flag=!this.flag;

}

public void watch(String string) {

// TODO Auto-generated method stub

}

//观看

public synchronized void watch()

{

if(flag)

{

try {

this.wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.println("听到了:"+voice);

//观看后:

this.notifyAll();

this.flag=!this.flag;

}

}

java信号灯_java 多线程-信号灯法相关推荐

  1. java模拟交通信号灯_java 多线程交通信号灯模拟过程详解

    这学期我们java课程的课程设计项目----交通信号灯的线程设计 实验目的:多线程设计,同步机制 题意 设计一个交通信号灯类: 变量:位置.颜色(红.黄.绿).显示时间(秒). 方法:切换信号灯. 创 ...

  2. 多线程 java 实例_Java多线程实例学习

    1. Java多线程的就绪.运行和死亡状态 就绪状态转换为运行状态:当此线程得到处理器资源: 运行状态转换为就绪状态:当此线程主动调用yield()方法或在运行过程中失去处理器资源. 运行状态转换为死 ...

  3. java厨房_Java多线程基础

    目录: 进程和线程 为什么使用多线程? 多线程的创建方式 Runnable与Thread两种方式比较 start()与run()方法 线程的生命周期/状态转换 常用方法使用与解读 线程的优先级 守护线 ...

  4. java 计时器_Java多线程并发容器之并发倒计时器

    从火箭发场景来学习Java多线程并发闭锁对象 倒计时器场景 在我们开发过程中,有时候会使用到倒计时计数器.最简单的是:int size = 5; 执行后,size-这种方式来实现.但是在多线程并发的情 ...

  5. java信号灯_java 信号灯 Semaphore

    http://blog.csdn.net/java2000_wl/article/details/23556859 import java.util.concurrent.ExecutorServic ...

  6. java多核_java多线程中与多核cpu有什么关系?

    操作系统提供多任务功能,进程和线程都是任务,进程有独立的内存空间.多任务被操作调度共享CPU,每个任务运行一个时间片,然后交出CPU,再由其他任务占用CPU.多任务又分为抢占式多任务和协作式多任务. ...

  7. 什么是java线程_Java多线程是什么意思?

    展开全部 Java多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多636f707932313 ...

  8. java丐帮_Java多线程学习笔记(一)

    一.什么是多线程 首先是多线程的概念: 多线程是异步的,和单任务不同,并不一定按照代码的执行顺序(上图左)来运行,而是交错占用CPU运行(上图右): 二.如何使用多线程 JAVA多线程有两种实现方式: ...

  9. java丐帮_java多线程学习笔记(五)

    补充一个synchronized关键字的结论: 线程A先持有object对象的Lock锁,B线程可以以异步的方式调用object对象中的非synchronized类型的方法 A线程现持有object对 ...

最新文章

  1. Github | NumPy手写全部主流机器学习模型
  2. 《训练指南》——6.9
  3. 项目中使用EasyPOI完成监控设备历史数据的导出
  4. 为什么base64编码的字符串的末尾有=符号
  5. STM32 KEIL 下的 printf 函数
  6. Qt+VS2019+OpenCV 使用问题 - Cound not find “QT“
  7. 使用Excel制作证件照之替换背景色
  8. 实例003 输出名言
  9. c语言处理文本断句空格,c语言怎么断句
  10. Codeforces #467 (Div. 2) B. Vile Grasshoppers 蚂蚱的题目
  11. docker相关的文件配置
  12. 使用Office 365前,企业必须要知道的10件事
  13. 弹幕插件easyDanmaku.js使用详解
  14. 从入门到断送职业生涯只差这几步
  15. 3D max新增超级阵列功能Array !
  16. 修改用户名和用户组名
  17. 软件危机的定义?软件危机的7个典型表现和为什么会出现软件危机?
  18. 数学表达式转换成python_简单数学表达式_清华尹成python入门教程_少儿编程视频-51CTO学院...
  19. (1) tcp、udp与sctp概述
  20. mysql数据库问题解答_MySQL数据库常见错误问题解答 - MySQL 教程精选

热门文章

  1. linux编译boost
  2. 实现lua面向对象的private属性
  3. leetcode 306. Additive Number | 306. 累加数(Java)
  4. leetcode 227. Basic Calculator II | 227. 基本计算器 II(中缀表达式求值)
  5. leetcode 223. Rectangle Area | 223. 矩形面积(Java)
  6. leetcode 101. 对称二叉树 递归解法
  7. C++ vector容器 find erase的使用:查找并删除指定元素
  8. Java HttpClient使用小结
  9. 分别从资源管理,服务用户,进程交互,系统实现的角度分析操作系统的作用
  10. 15.concurrent-control并发控制