如何基于AQS写CountDownLatch
发表于:2024-10-31 作者:千家信息网编辑
千家信息网最后更新 2024年10月31日,这期内容当中小编将会给大家带来有关如何基于AQS写CountDownLatch,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。import java.util.con
千家信息网最后更新 2024年10月31日如何基于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安全错误
数据库的锁怎样保障安全
软件开发一分钟自我介绍
王者我的服务器能不能删除
电脑网络安全配置
数据库原理自考知识点
韶关市网络安全it培训
计算机软件开发原则有哪些
公司文件服务器管理系统
凌霄工业互联网科技公司
连接不上本地数据库连接
数据库与数据仓库岗位
掉钱眼儿无法与服务器建立连接
服务器维护人员
安徽凌讯网络技术
数据库行业哪里就业好
联想服务器ts550
自动化软件开发培训
知网查重英文数据库有谷歌学术吗
米赚头条提示服务器错误
什么叫生物数据库
我的世界1122起床服务器ip
手机怎么修复游戏服务器
软件开发并行模式的特征
南充移动宽带服务器在哪
搭梯子服务器推荐
软件开发项目助理做什么
数据库三维图
网络安全平面设计说明
购买服务器费用计入什么科目
cv数据库
杭州营销网络技术咨询热线