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

java多线程与线程池-04线程池与AQS

第7章 线程池与AQS

java.util.concurrent包中的绝大多数同步工具,如锁(locks)和屏障(barriers)等,都基于AbstractQueuedSynchronizer(简称AQS)构建而成。这个框架提供了一套同步管理的通用机制,如同步状态的原子性管理、线程阻塞与解除阻塞,还有线程排队等。

在JDK1.5引入了java.util.concurrent包,其中包含多个支持中等级别线程并发的类,如可重入锁(ReentrantLock)、读锁(ReentrantReadWriteLock.ReadLock)、写锁(Reentrant-ReadWriteLock.WriteLock)、信号量(Semaphore)、屏障(CyclicBarrier)、Future对象、事件指示器以及传送队列等。这些同步类主要有如下功能:

(1)对象内部同步状态的维护(如表示锁的状态是已获取还是已释放)。

(2)更新和检查状态的操作。而且至少有一个方法会导致调用线程在同步状态被获取时被阻塞,以及在其他线程改变这个同步状态时解除线程的阻塞。

几乎任何一个知名的同步器都可以用来实现其他形式的同步器。例如,可以用可重入锁(ReentrantLock)来实现信号量(Semaphore);反之,用信号量也可以实现可重入锁。但是,这样做会带来复杂性高、开销过大、不灵活等问题,使其最终只能成为一个二流项目。而使用AQS用户可以用简洁的方式定义自己的线程同步器。

http://www.lryc.cn/news/37106.html

相关文章:

  • 优化模型验证关键代码25:样本均值近似技术处理两阶段随机旅行商问题及Gurobipy代码验证
  • 老爸:“你做的什么游戏测试简直是不务正业!”——我上去就是一顿猛如虎的解释。
  • JVM垃圾回收调优知识点整理
  • linux安装mysql-8.0.31
  • 2023 年会是网络安全的关键年吗?
  • 【深度强化学习】(1) DQN 模型解析,附Pytorch完整代码
  • Nginx服务优化与防盗链
  • npm与yarn常用命令
  • 【C++】C++11新特性——右值引用
  • C#基础教程21 正则表达式
  • 聚观早报|谷歌发布最大视觉语言模型;王兴投资王慧文ChatGPT项目
  • java Spring5 xml配置文件方式实现声明式事务
  • 常用存储芯片-笔记本上固态硬盘PTS11系列推荐
  • 【AI绘图学习笔记】奇异值分解(SVD)、主成分分析(PCA)
  • 【设计模式】模板方法模式和门面模式
  • Kubernetes未来十年的四大发展趋势
  • 一、sql 基础知识、函数和子查询
  • 产品射频认证笔记
  • 做了个springboot接口参数解密的工具,我给它命名为万能钥匙(已上传maven中央仓库,附详细使用说明)
  • 【Flutter从入门到入坑】Flutter 知识体系
  • 顺序表的基本操作
  • 设计模式——创建型模型——单列模式(8种实现)
  • 【软考中级】软件设计师笔记
  • 包教包会的ES6
  • python学习——【第四弹】
  • Web3中文|无聊猿Otherside元宇宙启动第二次旅行
  • SpringCloud-7_OpenFeign服务调用
  • 解决docker容器之间网络互通
  • 测试微服务:快速入门指南
  • MySQL Show Profile分析