多线程:信号灯法

package com.wuming.thread;//测试生产者消费者问题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;/*** Allocates a new {@code Thread} object. This constructor has the same* effect as {@linkplain #Thread(ThreadGroup, Runnable, String) Thread}* {@code (null, null, gname)}, where {@code gname} is a newly generated* name. Automatically generated names are of the form* {@code "Thread-"+}<i>n</i>, where <i>n</i> is an integer.*/public Player(TV tv) {this.tv = tv;}@Overridepublic 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;/*** Allocates a new {@code Thread} object. This constructor has the same* effect as {@linkplain #Thread(ThreadGroup, Runnable, String) Thread}* {@code (null, null, gname)}, where {@code gname} is a newly generated* name. Automatically generated names are of the form* {@code "Thread-"+}<i>n</i>, where <i>n</i> is an integer.*/public Watcher(TV tv) {this.tv=tv;}@Overridepublic void run() {for (int i = 0; i < 20; i++) {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=!flag;}
}

演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言 va_start 宏 - C语言零基础入门教程

目录 一.前言二.va_start 简介三.va_start 使用四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.前言 对 printf 函数的使用&#xff0c;我们并不陌生&#xff0c;首先我们来看看下面关于 printf 函数的几种调用方式&#xff1a; printf(&q…

使用Kubernetes和Docker将Spring Boot与MongoDB作为容器部署

戳蓝字“CSDN云计算”关注我们哦&#xff01;对于本教程&#xff0c;您将拥有一个Docker化Spring-Boot实例程序&#xff0c;该应用程序与MongoDB通信以获取GET/POST API请求&#xff0c;并部署在Kubernetes集群中。前提条件MinikubeKubectlDockerMavenDocker是一个具有"社…

C语言 va_end 宏 - C语言零基础入门教程

目录 一.前言二.va_end 简介三.va_end 使用四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.前言 对 printf 函数的使用&#xff0c;我们并不陌生&#xff0c;首先我们来看看下面关于 printf 函数的几种调用方式&#xff1a; printf("…

5种数据分析常用的思维方法!

戳蓝字“CSDN云计算”关注我们哦&#xff01;转自&#xff1a;中国统计网来源&#xff1a;网络大数据在数据分析中&#xff0c;数据分析思维是框架式的指引&#xff0c;实际分析问题时还是需要很多“技巧工具”的。就好比中学里你要解一元二次方式&#xff0c;可以用公式法、配…

多线程总结

package com.wuming.thread; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask;//多线程总结 public class ThreadNew {public static void main(String[] args) {new MyThread1().start();new…

C语言 va_arg 宏 - C语言零基础入门教程

目录 一.前言二.va_arg 简介三.va_arg 使用四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.前言 对 printf 函数的使用&#xff0c;我们并不陌生&#xff0c;首先我们来看看下面关于 printf 函数的几种调用方式&#xff1a; printf("…

分布式系统与消息投递

戳蓝字“CSDN云计算”关注我们哦&#xff01;原文&#xff1a;https://draveness.me/message-delivery消息是一个非常有趣的概念&#xff0c;它是由来源发出一个离散的通信单元&#xff0c;被发送给一个或者一群接受者&#xff0c;无论是单体服务还是分布式系统中都有消息的概念…

什么是计算机网络

1.打电话&#xff1a;连接 TCP 2.发短信&#xff1a;发就完了 UDP 计算机网络&#xff1a;地理位置不同的多台计算机及外部设备&#xff0c;通过线路连接&#xff0c;在网络操作系统、网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系…

C语言 vprintf 函数 - C语言零基础入门教程

目录 一.vprintf 函数和 printf 函数声明简介 1.printf 函数声明2.vprintf 函数声明 二.vprintf 函数和 printf 函数使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.vprintf 函数和 printf 函数声明简介 1.printf 函数声明 int printf…

“迁移策略+新容器运行时”应对有状态应用的冷热迁移挑战

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;稻农来源&#xff1a;阿里系统软件技术稻农&#xff08;叶磊&#xff09;阿里云智能事业群高级技术专家参与主导容器运行时及网络创新工作&#xff1b;目前的工作侧重于基于进程虚拟化的研究及增强&#xff08;网络…

C语言 main 函数参数 main(int argc, char *argv[]) - C语言零基础入门教程

目录 一.main 函数写法二.main 函数参数简介三.使用 main 函数参数 1.打印 main 函数参数 a.直接运行 exe 文件b.打开 cmd 命令行窗口执行 exe 文件c.打开 cmd 命令行窗口执行 exe 文件并设置 main 函数参数 2.使用 main 函数参数 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C …

网络通信的两个要素

如何实现网络通信&#xff1f; 通信双方地址&#xff1a; ip 端口号 192.168.16.124:5900 规则&#xff1a;网络通信的协议 TCP/IP参考模型&#xff1a; 小结&#xff1a; 1.网络编程两个主要问题&#xff1a; 定位一台或多台主机 找到主机如何通信 2.网络编程要素 …

讲讲亿级PV的负载均衡架构!

戳蓝字“CSDN云计算”关注我们哦&#xff01;来源&#xff1a;孤独烟引言本来没想写这个题材的&#xff0c;为了某某童鞋能够更好的茁壮成长&#xff0c;临时写一篇负载均衡的。负载均衡&#xff0c;大家可能听过什么3层负载均衡、4层负载均衡、7层负载均衡什么的&#xff1f;那…

C语言 vprintf 函数和 printf 函数区别 - C语言零基础入门教程

目录 一.vprintf 函数和 printf 函数声明简介 1.printf 函数声明2.vprintf 函数声明 二.vprintf 函数和 printf 函数使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.vprintf 函数和 printf 函数声明简介 1.printf 函数声明 int printf…

ip地址讲解啊

ip地址 ip地址&#xff1a;inetaddress 唯一定位一台网络上计算机 127.0.0.1&#xff1a;本机localhost C:\Users\admin>ping 127.0.0.1 正在 Ping 127.0.0.1 具有 32 字节的数据: 来自 127.0.0.1 的回复: 字节32 时间<1ms TTL128 来自 127.0.0.1 的回复: 字节32 时间&…

端口之讲解

端口表示计算机上的一个程序的进程 不同进程有不同的端口号&#xff0c;用来区分软件 被规定0~65535 TCP,UDP&#xff1a;65535*2 tcp:80,udp:80吗&#xff0c;单个协议下&#xff0c;端口号不能冲突 端口分类 公有端口0~1023 HTTP&#xff1a;80 HTTPS&#xff1a;443 …

云漫圈 | 学Python还是Java, 8张漫画带你全面分析

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;Leoxin来源&#xff1a;菜鸟学PythonJava和Python两门语言都是目前非常热门的语言&#xff0c;可谓北乔峰南慕容&#xff0c;二者不分上下&#xff0c;棋逢对手。但是对于初学者来说&#xff0c;非常困惑&#xff0…

C语言 exit 函数 - C语言零基础入门教程

目录 一.exit 函数简介二.exit 函数使用三.exit 函数和 return 区别四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.exit 函数简介 #include <stdlib.h>/*描述&#xff1a;终止正在执行的进程*//*函数参数&#xff1a;status 等于 1 …

react之讲解

<!DOCTYPE html> <html> <head> <meat charset"UTF-8"> <title>hello_react</title> </head> <body> <!-- 准备好一个容器 --> <div id"test"></div> <!-- 核心库 --> <s…

史上最全SQL优化方案

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;惨绿少年来源&#xff1a;Hollis在进行MySQL的优化之前&#xff0c;必须要了解的就是MySQL的查询过程&#xff0c;很多查询优化工作实际上就是遵循一些原则&#xff0c;让MySQL的优化器能够按照预想的合理方式运行而…