如何基于AQS写CountDownLatch
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这期内容当中小编将会给大家带来有关如何基于AQS写CountDownLatch,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。import java.util.con
千家信息网最后更新 2025年02月03日如何基于AQS写CountDownLatch
这期内容当中小编将会给大家带来有关如何基于AQS写CountDownLatch,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.AbstractQueuedSynchronizer;/** * Created by yzy on 2018/10/31. */public class MyCountDownLatch { /** * Synchronization control For CountDownLatch. * Uses AQS state to represent count. */ private static final class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = 4982264981922014374L; Sync(int count) { setState(count); } int getCount() { return getState(); } @Override protected int tryAcquireShared(int acquires) { return (getState() == 0) ? 1 : -1; } @Override protected boolean tryReleaseShared(int releases) { // Decrement count; signal when transition to zero for (;;) { int c = getState(); if (c == 0) return false; int nextc = c-1; if (compareAndSetState(c, nextc)) return nextc == 0; } } } private final Sync sync; public MyCountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("count < 0"); this.sync = new Sync(count); } public void await() throws InterruptedException { sync.acquireSharedInterruptibly(1); } public boolean await(long timeout, TimeUnit unit) throws InterruptedException { return sync.tryAcquireSharedNanos(1, unit.toNanos(timeout)); } public void countDown() { sync.releaseShared(1); } public long getCount() { return sync.getCount(); } public String toString() { return super.toString() + "[Count = " + sync.getCount() + "]"; }}
上述就是小编为大家分享的如何基于AQS写CountDownLatch了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
内容
分析
专业
中小
内容丰富
就是
文章
更多
知识
篇文章
行业
角度
资讯
资讯频道
频道
有关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
接口测试输入负数服务器怎么处理
栖霞商城软件开发公司
黄浦区一站式软件开发口碑推荐
企业微信的服务器配置在哪里
软件开发必会
住建局意识形态网络安全
win7怎么备份数据库
阿里云服务器怎么选择
400路总控管理服务器
网络安全企业服务资格认证
长城基础软件开发部
网络安全的第一负责人是谁
proc 数据库链接池
网络技术与梦想
淄川生产软件开发报价
服务器上的内存可以插电脑上吗
数据库vc6.0
主机服务器地址
数据库技术基础第八章表单设计
ud服务器
vr软件开发翻译
软件开发要数学和物理知识吗
监狱网络安全宣传周小结
系统软件开发环境keil
大连2年软件开发工资
服务器网卡高级服务
镇江导航软件开发
济南网络安全技术学院
苏州戴尔服务器优点对比
软件开发人员评价标准