Semaphore
文章目录
一种并发流程控制的工具类。
- Semaphore
- 主要成员
- 成员变量
- 内部类
- Sync
- NonfairSync
- FairSync
- 核心方法
- 示例
- 源码分析
用来控制访问特定资源的线程数量,通过协调各个线程,保证合理利用资源。
主要成员 成员变量/*同步队列*/
private final Sync sync;
内部类
Sync
Sync继承了AQS,并实现了共享锁的获取与释放相关方法。同步控制依赖AQS。详细见AQS的分析.
abstract static class Sync extends AbstractQueuedSynchronizer {
private static final long serialVersionUID = 1192457210091910933L;
// 构造器
Sync(int permits) {
setState(permits);
}
// 获取同步状态值
final int getPermits() {
return getState();
}
// 非公平式获取共享锁
final int nonfairTryAcquireShared(int acquires) {
// 无限循环
for (;;) {
// 获取当前同步状态值--可用锁的数量
int available = getState();
int remaining = available - acquires;
// 当CAS操作成功或剩余锁不足的时候,返回退出
if (remaining
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?