【Java并发】同步模式之保护性暂停
public class 设计模式_保护性暂停 {public static void main(String[] args) {GuardedObject guardedObject = new GuardedObject();new Thread(()->{guardedObject.doWorkSetResponse("1");},"楠哥").start();new Thread(()->{guardedObject.waitResponse(2000);},"熊哥").start();}
}class GuardedObject{private String response;public String waitResponse(long timeout){long begin = System.currentTimeMillis();synchronized (this){long parseTime = 0;while (response == null){long rest = timeout - parseTime;if (rest<0){rest = 0;}try {System.out.println("熊哥叫楠哥去吃饭,但是楠哥不在,熊哥开始等楠哥睡醒......");wait(rest);if (timeout-(System.currentTimeMillis() - begin)<=0){System.out.println("熊哥给楠哥发消息:饿死了,不等你了,我先走了.......");break;}} catch (InterruptedException e) {e.printStackTrace();}parseTime = System.currentTimeMillis() - begin;}}return response;}public void doWorkSetResponse(String response){System.out.println("楠哥正在睡觉......");try {Thread.sleep(6000);System.out.println("6 hours later......");} catch (InterruptedException e) {e.printStackTrace();}synchronized (this){this.response = response;notifyAll();}System.out.println("楠哥睡醒了,告诉了熊哥");}
}
用于一个线程等待另一个线程的消息。
和join相比的好处:
join只有在一个线程结束之后,下一个线程才会被唤醒。而保护性暂停模式可以在线程运行中给另外一个线程传递信号。
【Java并发】同步模式之保护性暂停相关推荐
- java 并发 同步信号_Java并发教程–信号量
java 并发 同步信号 这是我们将要进行的Java并发系列的第一部分. 具体来说,我们将深入研究Java 1.5及更高版本中内置的并发工具. 我们假设您对同步和易失性关键字有基本的了解. 第一篇文章 ...
- java并发,同步synchronize和lock锁的使用方法和注意,死锁案例分析
1.什么是线程安全问题 多个线程同时共享同一个全局变量或者静态变量的时候,某个线程的写操作,可能会影响到其他线程操作这个变量.所有线程读一个变量不会产生线程安全问题. 实际场景就是火车站买票问题:剩余 ...
- Java并发编程 - 共享模型之管程
一. 共享带来的问题 小故事 老王(操作系统)有一个功能强大的算盘(CPU),现在想把它租出去,赚一点外快 小南.小女(线程)来使用这个算盘来进行一些计算,并按照时间给老王支付费用 但小南不能一天 2 ...
- 学习笔记:Java 并发编程②_管程
若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/av81461839 配套资料: ...
- 一、Java并发编程之线程、synchronized
黑马课程 文章目录 1. Java线程 1.1 创建和运行线程 方法一:Thread 方法二:Runnable(推荐) lambda精简 Thread和runnable原理 方法三:FutureTas ...
- Java并发——AQS、AQS到底什么是AQS?这玩意干啥的?
大白话 简单讲就是两句话: 1.是什么? AQS就是一个工具类,算是在并发情况下规范了对"资源"或者说"数据"操作的一种机制或者说是规范.专业一点的叫法是:抽象 ...
- 【Java并发编程】java高并发的解决方案(一)
对于我们开发的网站,如果网站的访问量非常大的话,我们就需要考虑相关的并发访问问题了.而且并发问题也是中高级工程师面试中必问的问题,今天我们就来系统学习一下. 为了更好的理解并发和同步,我们先学习两个重 ...
- Java并发——Synchronized和Volatile
Java并发同步机制 一.Synchronized 1>实现方式及原理 它的使用方法有以下三种 同步普通方法,锁当前实例对象(对这个类的对象操作需要获取锁) 同步静态方法,锁当前Class对象( ...
- 并发设计模式——保护性暂停(Guarded Suspension)
并发设计模式--保护性暂停(Guarded Suspension) 什么叫做 Guarded Suspension ? guarded 的意思是"守护.担保",suspension ...
最新文章
- 教你设计一个超牛逼的本地缓存!
- R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA)、使用interaction.plot函数在双因素方差分析中可视化交互作用(Interaction)
- hadoop学习--基于Hive的Hadoop日志分析
- mysql sql执行加载顺序
- BZOJ1876 SDOI2009 SuperGCD 其他
- LG WP7机型工程模式下越狱
- Delete与Top连用限制删除行
- 结合XML的数据检索技术
- Linux内核中的IPSEC实现(6)
- 《SEO深度解析——全面挖掘搜索引擎优化的核心秘密》
- Panda-DEA,一款新的DEA模型软件
- 导出(合并)手机QQ浏览器下载的视频
- nginx史上最强入门教学
- 软件测试的意义究竟是什么?
- android怎么监听多点触摸_Android笔记:触摸事件的分析与总结----多点触控
- Codeforces Round #521 (Div. 3) E. Thematic Contests(dp)
- Roxe:大涨时毅然销毁99% ROC 专注解决跨境汇款难题
- 苹果xs还原卡在进度条怎么关机
- 防范IFEO映像劫持
- 计算机网络学习笔记(五)——介质访问控制子层、ALOHA、CSMA/CD、CSMA/CA、有限竞争协议、非竞争式协议、网桥、交换机、以太网