【并发编程】AQS学习
2024-10-19 11:53:29
一个简单的示例:
package net.jcip.examples;
import java.util.concurrent.locks.*;
import net.jcip.annotations.*;
/**
* OneShotLatch
* <p/>
* Binary latch using AbstractQueuedSynchronizer
*
* @author Brian Goetz and Tim Peierls
*/
@ThreadSafe
public class OneShotLatch {
private final Sync sync = new Sync(); //基于委托的方式
public void signal() {
sync.releaseShared(0); //
//会调用
tryAcquireShared}
public void await() throws InterruptedException {
sync.acquireSharedInterruptibly(0); //会调用
tryAcquireShared}
private class Sync extends AbstractQueuedSynchronizer { //内部私有类
protected int tryAcquireShared(int ignored) {
// Succeed if latch is open (state == 1), else fail
return (getState() == 1) ? 1 : -1;
}
protected boolean tryReleaseShared(int ignored) {
setState(1); // Latch is now open
return true; // Other threads may now be able to acquire
}
}
}
附件列表
最新文章
- Smart3D系列教程3之 《论照片三维重建中Smart3D几个工作模块的功能意义》
- Google Chrome 应用商店上传扩展程序
- web端通信技术
- “LAMP“或“LNMP”组合
- 关于IOS多线程的好的技术博客
- 使用javabeen的好处
- paper 65 :尺度不变特征变换匹配算法[转载]
- AutoCompleteTextView与TextWatcher的结合
- mysql颠覆实战笔记(八)--mysql的自定义异常处理怎么破
- 跟我一起学extjs5(05--主界面上增加顶部和底部区域)
- MacBook USB Type-C接口很美?其实是缩水的!
- 【Netty源码分析】发送数据过程
- Appium(二)---启动App+模拟滑动
- Hyperledger Fabric-CA学习
- How To Add Custom Build Steps and Commands To setup.py
- Angular2 File Upload
- python3之MongoDB
- JS----获取DOM元素的方法(8种)
- 网络基础&#160;HTTP协议之HTTP消息(HTTP&#160;Message)
- 【CF802C】Heidi and Library (hard) 费用流
热门文章
- hdu 2337 Escape from Enemy Territory
- IOKit找不到问题定义
- php部分--面向对象三大特性-封装(另加连续调用的一个例子)、继承(重写、重载的例子)、多态;
- Linux 下WordPress FTP帐号解决办法
- MySQL中日期与字符串相互转换,并进行日期比较查询
- 【P1835】小红花
- 论文阅读之 DECOLOR: Moving Object Detection by Detecting Contiguous Outliers in the Low-Rank Representation
- C++ 实用的小程序
- MySQL 日志管理详解
- MySQL数据库InnoDB存储引擎多版本控制(MVCC)实现原理分析