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

news/2024/6/29 12:16:06 标签: java, 多线程, 线程池, AQS,

AQS_0">第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.niftyadmin.cn/n/138528.html

相关文章

FCN网络介绍

目录前言一.FCN网络二.网络创新点前言 在图像分割领域,有很多经典的网络,如MASK R-CNN,U-Net,SegNet,DeepLab等网络都是以FCN为基础进行设计的。我们这里简单介绍一下这个网络。 一.FCN网络 FCN网络介绍   FCN 即全…

【嵌入式Linux内核驱动】02_字符设备驱动

字符设备驱动 〇、基本知识 设备驱动分类 (按共性分类方便管理) 1.字符设备驱动 字符设备指那些必须按字节流传输,以串行顺序依次进行访问的设备。它们是我们日常最常见的驱动了,像鼠标、键盘、打印机、触摸屏,还有…

dockerFile编写

dockerFile编写 语法参数 # DockerFile常用指令 USER # 指定运行的用户,一般不用配置 FROM # 拉取基础镜像,一切从这里开始构建 ARG # 构建参数,只能在dockerFile中使用, # eg: JAR_FILEtarget/springboot-mongo-0.0.1-SNAPSHOT.jar MAI…

专项攻克——二叉树

文章目录一、二叉树定义、分类二、二叉树的存储结构三、创建二叉树四、遍历方式一、二叉树定义、分类 二叉树:是N个结点的有序集合,该集合或者为空集,或者由一个根节点跟两棵互不相交的、分别称为根节点的左子树或者右子树的二叉树组成。每个…

测试微服务:快速入门指南

在过去几年中,应用程序已经发展到拥有数百万用户并产生大量数据。使用这些应用程序的人期望快速响应和 24/7 可用性。为了使应用程序快速可用,它们必须快速响应增加的负载。 一种方法是使用微服务架构,因为在单体应用程序中,主要…

政府工作报告连提9年科技创新 企业研发如何“又快又好”

今年的政府工作报告, “科技创新” 这一描述连续出现7次,这也是自2015年开始, “科技创新” 这一概念在全国“两会”政府工作报告中连续九年被提到。政府工作报告指出,科技政策要聚焦自立自强,完善新型举国体制&#x…

25k的Java开发常问的ThreadLocal问题有哪些?

前言:ThreadLocal问的比较多的是和Synchronized的区别、ThreadLocal被设计弱引用、存储元素的过程、实现线程隔离的原理。 文章目录 ThreadLocalThreadLocal定义ThreadLocal与Synchronized的区别ThreadLocal底层实现ThreadLocalMap存储元素的过程ThreadLocal实现线程隔离的原理…

【改机教程】iOS系统去除小黑条,改拍照声、拨号音、键盘音,不用越狱,支持所有机型

大家好,上次给大家分享了几个iOS系统免越狱改机教程 今天带来最新的教程,这次修改利用的是同一个漏洞,由外网大神 tamago 开发,国内大神冷风 进行汉化和优化 可以修改的地方包括 去除底部小黑条 dock栏透明 桌面文件夹透明 桌面…