并发编程
文章平均质量分 74
莫小兮丶
努力成为技术达人
展开
-
AQS同步组件
队列同步器AQS:同步状态(共享资源)state + CLH同步队列(内置FIFO队列,请求共享资源的线程),用来构建锁或者其他同步组件的基础框架,既可以支持独占式地获取同步状态,也可以支持共享式地获取同步状态,这样就可以方便实现不同类型的同步组件独占式组件ReentrantLock:重入锁,不同线程不能共享访问共享资源,分为公平锁和非公平锁模式,实现Lock接口state为0:资源可用,state为1:资源正被一个线程使用Mutex共享式组件Semaphore:限制某种资源的线程数量,也原创 2021-04-11 20:33:57 · 97 阅读 · 0 评论 -
关于ThreadLocal你知道多少?
定义:线程(本地)变量,一种保证和规避多线程出现不安全的同步方式ThreadLocal是JDK包提供的,它提供线程本地变量,如果创建一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个副本,在实际多线程操作的时候,操作的是自己本地内存中的变量,从而规避了线程安全问题。也就是说,一个以ThreadLocal对象为键、任意对象为值的存储结构,这个结构被附带在线程上set(T)方法设置值,get()方法获取值,这个所谓的key-value只对当前线程可见表面上看,ThreadLoc原创 2021-04-11 20:26:43 · 129 阅读 · 0 评论 -
Java死锁的产生和解决
定义所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进死锁产生的4个必要条件互斥。一个资源只能被一个进程占用请求和保持。某个进程之前申请了资源,还想再申请资源,同时不释放原来的资源不可剥夺。某个进程占用了资源,就只能他自己去释放循环等待。一定会有一个环互相等待避免死锁的常见方法解决死锁只要破坏其中一个必要条件就行避免一个线程同时获取多个锁避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源尝试使原创 2021-04-06 10:49:52 · 216 阅读 · 1 评论 -
ReentrantReadWriteLock读写锁实现原理
要了解ReentrantReadWriteLock,首先要了解AQSAQS是队列同步器,由2部分组成:同步状态:共享资源state和CLH同步队列:内置FIFO队列,请求共享资源的线程,用来构建锁或者其他同步组件的基础框架,既可以支持独占式地获取同步状态,也可以支持共享式地获取同步状态,这样就可以方便实现不同类型的同步组件独占式实现有:ReentrantLock、Mutex等共享式实现有:Semaphore、CountDownLatch、CyclicBarrier等我们要说的ReentrantRe原创 2021-03-22 21:07:23 · 817 阅读 · 1 评论