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并发】同步模式之保护性暂停相关推荐

  1. java 并发 同步信号_Java并发教程–信号量

    java 并发 同步信号 这是我们将要进行的Java并发系列的第一部分. 具体来说,我们将深入研究Java 1.5及更高版本中内置的并发工具. 我们假设您对同步和易失性关键字有基本的了解. 第一篇文章 ...

  2. java并发,同步synchronize和lock锁的使用方法和注意,死锁案例分析

    1.什么是线程安全问题 多个线程同时共享同一个全局变量或者静态变量的时候,某个线程的写操作,可能会影响到其他线程操作这个变量.所有线程读一个变量不会产生线程安全问题. 实际场景就是火车站买票问题:剩余 ...

  3. Java并发编程 - 共享模型之管程

    一. 共享带来的问题 小故事 老王(操作系统)有一个功能强大的算盘(CPU),现在想把它租出去,赚一点外快 小南.小女(线程)来使用这个算盘来进行一些计算,并按照时间给老王支付费用 但小南不能一天 2 ...

  4. 学习笔记:Java 并发编程②_管程

    若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/av81461839 配套资料: ...

  5. 一、Java并发编程之线程、synchronized

    黑马课程 文章目录 1. Java线程 1.1 创建和运行线程 方法一:Thread 方法二:Runnable(推荐) lambda精简 Thread和runnable原理 方法三:FutureTas ...

  6. Java并发——AQS、AQS到底什么是AQS?这玩意干啥的?

    大白话 简单讲就是两句话: 1.是什么? AQS就是一个工具类,算是在并发情况下规范了对"资源"或者说"数据"操作的一种机制或者说是规范.专业一点的叫法是:抽象 ...

  7. 【Java并发编程】java高并发的解决方案(一)

    对于我们开发的网站,如果网站的访问量非常大的话,我们就需要考虑相关的并发访问问题了.而且并发问题也是中高级工程师面试中必问的问题,今天我们就来系统学习一下. 为了更好的理解并发和同步,我们先学习两个重 ...

  8. Java并发——Synchronized和Volatile

    Java并发同步机制 一.Synchronized 1>实现方式及原理 它的使用方法有以下三种 同步普通方法,锁当前实例对象(对这个类的对象操作需要获取锁) 同步静态方法,锁当前Class对象( ...

  9. 并发设计模式——保护性暂停(Guarded Suspension)

    并发设计模式--保护性暂停(Guarded Suspension) 什么叫做 Guarded Suspension ? guarded 的意思是"守护.担保",suspension ...

最新文章

  1. 教你设计一个超牛逼的本地缓存!
  2. R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA)、使用interaction.plot函数在双因素方差分析中可视化交互作用(Interaction)
  3. hadoop学习--基于Hive的Hadoop日志分析
  4. mysql sql执行加载顺序
  5. BZOJ1876 SDOI2009 SuperGCD 其他
  6. LG WP7机型工程模式下越狱
  7. Delete与Top连用限制删除行
  8. 结合XML的数据检索技术
  9. Linux内核中的IPSEC实现(6)
  10. 《SEO深度解析——全面挖掘搜索引擎优化的核心秘密》
  11. Panda-DEA,一款新的DEA模型软件
  12. 导出(合并)手机QQ浏览器下载的视频
  13. nginx史上最强入门教学
  14. 软件测试的意义究竟是什么?
  15. android怎么监听多点触摸_Android笔记:触摸事件的分析与总结----多点触控
  16. Codeforces Round #521 (Div. 3) E. Thematic Contests(dp)
  17. Roxe:大涨时毅然销毁99% ROC 专注解决跨境汇款难题
  18. 苹果xs还原卡在进度条怎么关机
  19. 防范IFEO映像劫持
  20. 计算机网络学习笔记(五)——介质访问控制子层、ALOHA、CSMA/CD、CSMA/CA、有限竞争协议、非竞争式协议、网桥、交换机、以太网

热门文章

  1. 第二章:大数据文件系统之HDFS-CSDN就业班-专题视频课程
  2. 转自千千:量化高频框架的搭建
  3. FBI阅人术——用最短的时间了解一个人
  4. 【跨境必备】五分钟学会设定Facebook Chatbot
  5. 从像素之间谈起:像素游戏的画面增强
  6. 架构师接龙:岳旭强 VS. 杨卫华
  7. OSChina 周四乱弹 —— 你妈是洗衣机的亲妈
  8. IntelliJ Idea 常用10款插件
  9. CDEC2021 | 智领云CTO宋文欣:构建云原生数据中台,赋能合作伙伴
  10. spring实战笔记_第4章