当前位置: 首页 > ai >正文

【JAVA】48. Semaphore信号量控制资源并发访问

一、核心知识点详细解释

1.1 Semaphore 概述

Semaphore 是 Java 并发包 java.util.concurrent 中的一个工具类,它用于控制对有限资源的并发访问。Semaphore 内部维护了一组许可证(permit),线程在访问资源前需要先获取许可证,如果许可证数量为 0,则线程会被阻塞,直到有其他线程释放许可证。

1.2 Semaphore 的构造方法

Semaphore 有两个构造方法:

  • Semaphore(int permits):创建一个具有指定许可证数量的 Semaphore 对象,默认是非公平模式。
  • Semaphore(int permits, boolean fair):创建一个具有指定许可证数量的 Semaphore 对象,并可以指定是否为公平模式。公平模式下,线程会按照请求许可证的顺序获取许可证;非公平模式下,线程可能会插队获取许可证。

1.3 主要方法

  • acquire():获取一个许可证,如果没有可用的许可证,则线程会被阻塞。
  • acquire(int permits):获取指定数量的许可证,如果没有足够的许可证,则线程会被阻塞。
  • release():释放一个许可证。
  • release(int permits):释放指定数量的许可证。
  • availablePermits():返回当前可用的许可证数量。

1.4 代码示例

import java.util.concurrent.Semaphore;public class SemaphoreExample {private static final int THREAD_COUNT = 5
http://www.xdnf.cn/news/14265.html

相关文章:

  • Python函数基础知识(2/3)
  • 电阻篇---下拉电阻
  • 3_STM32开发板使用(STM32F103ZET6)
  • Spring Boot诞生背景:从Spring的困境到设计破局
  • MAZANOKE:一款隐私优先的浏览器图像优化工具及Docker部署指南
  • 基于AWS无服务器架构的区块链API集成:零基础设施运维实践
  • Java面试题:分布式ID时钟回拨怎么处理?序列号耗尽了怎么办?
  • VINS-Fusion 简介、安装、编译、数据集/相机实测
  • 传统数据仓库正在被 Agentic AI 吞噬
  • 超高速总线CDCTL01A 芯片在机器人领域的应用解析
  • SLB、Nginx、Gateway 与 ECS 的关系详解
  • Node.js 中的 Token 认证机制详解
  • 【Docker 05】Container - 容器
  • volatile 对 int 和 long 修改的区别
  • 如何制定适用于多项目的统一流程规范
  • 关于AUTOSAR AP 开发流程的研究
  • (83)课102:过程里的条件判断 IF 条件1 THEN .. ELSEIF 条件2 THEN .. ELSE .. END IF;
  • # 把 ISO 写入 U 盘(相关了解)
  • VBA使用字典统计
  • 金蝶云星空BOS开发
  • 搜索问答技术概述:基于知识图谱与MRC的创新应用
  • OAC: Output-adaptive Calibration for Accurate Post-training Quantization
  • 痉挛性斜颈:认识颈部的 “异常挛动”
  • Java-String
  • 如何快速提升英文听力?
  • PCB设计杂谈之一
  • Amazon Q in QuickSight 实战:自然语言秒级生成数据报表与深度洞察
  • 打牙祭是什么意思
  • 快速读取数据
  • 006__C++类的特殊用法