保护性暂停-增强超时


import com.sun.corba.se.impl.orbutil.concurrent.Sync;
import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j;@Slf4j(topic = "c.Test20")
public class Test20 {public static void main(String[] args) {// 线程1等待线程2的下载结果GuardedObject guardedObject = new GuardedObject();new Thread(()->{log.debug("等待结果");Object object = guardedObject.get(2000);log.debug("结果大小:{}",object);},"t1").start();new Thread(()->{log.debug("执行下载");Object object = new Object();try {Thread.sleep(5000);guardedObject.complete(object);} catch (InterruptedException e) {e.printStackTrace();}},"t2").start();}
}class GuardedObject{private Object response;// 最多等多久public Object get(long timeout){synchronized (this){// 开始时间long begin = System.currentTimeMillis();long passedTime = 0;while(null == response){long waitTime = timeout - passedTime;if(waitTime<=0){break;}try {this.wait(waitTime);} catch (InterruptedException e) {e.printStackTrace();}// 求得经历时间passedTime = System.currentTimeMillis()-begin;}}return response;}public void complete(Object response){synchronized (this){this.response = response;this.notifyAll();}}
}

JUC并发编程七 并发架构--wait/notify相关推荐

  1. 【并发编程七】C++进程通信——套接字(socket)_80行代码实现一个聊天软件

    [并发编程七]进程通信--套接字(socket)_80行代码实现一个聊天软件 一.简介 二.相关知识介绍 1.winsock1.h.winsock2.h 2.如何使用ws2_32.dll 3.WSAS ...

  2. java设计模式并发_[高并发Java 七] 并发设计模式

    [高并发Java 七] 并发设计模式 [高并发Java 七] 并发设计模式 为什么80%的码农都做不了架构师?>>> 在软件工程中,设计模式(design pattern)是对软件设 ...

  3. 【Java并发编程】并发编程大合集

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17539599 为了方便各位网友学习以及方便自己复习之用,将Java并发编程系列内容系列内容 ...

  4. 【檀越剑指大厂--并发编程】并发编程总结

    并发编程 一.并发基础 1.什么是并行和并发? 并行,表示两个线程同时(同一时间)做事情. 并发,表示一会做这个事情,一会做另一个事情,存在着调度. 单核 CPU 不可能存在并行(微观上). 2.什么 ...

  5. Java并发编程:并发容器之CopyOnWriteArrayList(转载)

    Java并发编程:并发容器之CopyOnWriteArrayList(转载) 原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW ...

  6. 【转】Java并发编程:并发容器之ConcurrentHashMap

    JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了 ...

  7. 学习笔记:Java 并发编程⑥_并发工具_JUC

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

  8. java并发编程_Java并发编程之 synchronized

    大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下Java中内存泄漏如何分析解决的相关知识,今天跟大家分享Java之 sync ...

  9. 并发编程-02并发基础CPU多级缓存和Java内存模型JMM

    文章目录 CPU多级缓存 CPU多级缓存概述 CPU 多级缓存-缓存一致性协议MESI CPU 多级缓存-乱序执行优化-重排序 JAVA内存模型 (JMM) 计算机硬件架构简易图示 JAVA内存模型与 ...

最新文章

  1. 和世界冠军一起准备ACM!清华杜瑜皓来了:连续4年ACM中国赛区冠军
  2. 二叉树的层序遍历_NC15 求二叉树的层序遍历
  3. 测试你的前端代码 - part3(端到端测试)
  4. 多领导者改进算法的MATLAB仿真
  5. 网站计数器 php,网站计数器 php
  6. 单个节点的缓存容量达到上限 Hash算法一致性
  7. WORD 如何在方框里打勾?
  8. Google 又逆天:语音输入离线实时输出文字,仅占 80 MB !然而……
  9. saltstack event配合websocket客户端实时推送结果
  10. 0723函数的递归以及模块的初识
  11. terraform 腾讯云_使用Terraform优化云成本的权威指南
  12. 关于开机USB电涌15秒关机的另类解决方法
  13. 淘宝客如何通过闲鱼引流?淘宝客的推广方法有哪些?
  14. nmap常用命令/使用教程
  15. 什么叫资讯,资讯是什么?
  16. 打蚊子表情包_打蚊子表情包 - 打蚊子微信表情包 - 打蚊子QQ表情包 - 发表情 fabiaoqing.com...
  17. ubuntu16.04安装opencv3.4.1
  18. 一个企业上线PLM系统前应该做些什么?杰信PLM
  19. 开源进展|区块链跨链协作平台WeCross v1.1.0发布
  20. USDT TRC20 支付通道系统TRC20

热门文章

  1. cf D. Powerful array 莫队算法
  2. python 3.5(socket)
  3. 多用户虚拟Web3D环境Deep MatrixIP9 1.04发布
  4. 单位四元数(unit quaternion)
  5. 这些AI应用不简单,Keep首场技术开放日限时报名ing!
  6. Python学习笔记__4章 函数式编程
  7. %@ INCLUDE FILE=%与JSP:INCLUDE PAGE=/区别
  8. Swift和OC文件间的相互调用
  9. [转载] 七龙珠第一部——第092话 孙悟空上场了
  10. 使用 Apache OpenJPA 开发 EJB 3.0 应用,第 6 部分: 处理实体生命周期事件的回调