博客
关于我
java线程(19)——信号灯法,电视播放,生产者与消费者的案例
阅读量:328 次
发布时间:2019-03-04

本文共 1629 字,大约阅读时间需要 5 分钟。

通过标识符来组织消费者与生产者之间的关系:演员观众示例

代码内容

//测试生产者消费者问题2:信号灯发,标志位解决public class TestPC2 {       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;    }    @Override    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;    }    @Override    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) {                   e.printStackTrace();            }        }        System.out.println("演员表演了:"+voice);        //通知观众观看        this.notifyAll();//通知唤醒        this.voice=voice;        this.flag = !this.flag;    }    //观看    public synchronized void watch(){           if (flag){               try {                   this.wait();            } catch (InterruptedException e) {                   e.printStackTrace();            }        }        System.out.println("观看了:"+voice);        //通知演员表演        this.notifyAll();        this.flag= !this.flag;    }}

运行结果

在这里插入图片描述

转载地址:http://useq.baihongyu.com/

你可能感兴趣的文章
mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
查看>>
mysqldump 参数--lock-tables浅析
查看>>
mysqldump 导出中文乱码
查看>>
mysqldump 导出数据库中每张表的前n条
查看>>
mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
查看>>
Mysqldump参数大全(参数来源于mysql5.5.19源码)
查看>>
mysqldump备份时忽略某些表
查看>>
mysqldump实现数据备份及灾难恢复
查看>>
mysqldump数据库备份无法进行操作只能查询 --single-transaction
查看>>
mysqldump的一些用法
查看>>
mysqli
查看>>
MySQLIntegrityConstraintViolationException异常处理
查看>>
mysqlreport分析工具详解
查看>>
MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
查看>>
Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
查看>>
mysql_real_connect 参数注意
查看>>
mysql_secure_installation初始化数据库报Access denied
查看>>
MySQL_西安11月销售昨日未上架的产品_20161212
查看>>
Mysql——深入浅出InnoDB底层原理
查看>>
MySQL“被动”性能优化汇总
查看>>