一个简单的示例:

  1. package net.jcip.examples;
  2. import java.util.concurrent.locks.*;
  3. import net.jcip.annotations.*;
  4. /**
  5.  * OneShotLatch
  6.  * <p/>
  7.  * Binary latch using AbstractQueuedSynchronizer
  8.  *
  9.  * @author Brian Goetz and Tim Peierls
  10.  */
  11. @ThreadSafe
  12. public class OneShotLatch {
  13.     private final Sync sync = new Sync(); //基于委托的方式
  14.     public void signal() {
  15.         sync.releaseShared(0); ////会调用 tryAcquireShared
  16.     }
  17.     public void await() throws InterruptedException {
  18.         sync.acquireSharedInterruptibly(0); //会调用 tryAcquireShared
  19.     }
  20.     private class Sync extends AbstractQueuedSynchronizer { //内部私有类
  21.         protected int tryAcquireShared(int ignored) {
  22.             // Succeed if latch is open (state == 1), else fail
  23.             return (getState() == 1) ? 1 : -1;
  24.         }
  25.         protected boolean tryReleaseShared(int ignored) {
  26.             setState(1); // Latch is now open
  27.             return true; // Other threads may now be able to acquire
  28.         }
  29.     }
  30. }






附件列表

最新文章

  1. Smart3D系列教程3之 《论照片三维重建中Smart3D几个工作模块的功能意义》
  2. Google Chrome 应用商店上传扩展程序
  3. web端通信技术
  4. “LAMP“或“LNMP”组合
  5. 关于IOS多线程的好的技术博客
  6. 使用javabeen的好处
  7. paper 65 :尺度不变特征变换匹配算法[转载]
  8. AutoCompleteTextView与TextWatcher的结合
  9. mysql颠覆实战笔记(八)--mysql的自定义异常处理怎么破
  10. 跟我一起学extjs5(05--主界面上增加顶部和底部区域)
  11. MacBook USB Type-C接口很美?其实是缩水的!
  12. 【Netty源码分析】发送数据过程
  13. Appium(二)---启动App+模拟滑动
  14. Hyperledger Fabric-CA学习
  15. How To Add Custom Build Steps and Commands To setup.py
  16. Angular2 File Upload
  17. python3之MongoDB
  18. JS----获取DOM元素的方法(8种)
  19. 网络基础&#160;HTTP协议之HTTP消息(HTTP&#160;Message)
  20. 【CF802C】Heidi and Library (hard) 费用流

热门文章

  1. hdu 2337 Escape from Enemy Territory
  2. IOKit找不到问题定义
  3. php部分--面向对象三大特性-封装(另加连续调用的一个例子)、继承(重写、重载的例子)、多态;
  4. Linux 下WordPress FTP帐号解决办法
  5. MySQL中日期与字符串相互转换,并进行日期比较查询
  6. 【P1835】小红花
  7. 论文阅读之 DECOLOR: Moving Object Detection by Detecting Contiguous Outliers in the Low-Rank Representation
  8. C++ 实用的小程序
  9. MySQL 日志管理详解
  10. MySQL数据库InnoDB存储引擎多版本控制(MVCC)实现原理分析