
juc
文章平均质量分 58
九亿成熟男人的梦想
这个作者很懒,什么都没留下…
展开
-
JUT之CountDownLatch
CountDownLatch的简单介绍:CountDownLatch也是基于AQS的,因为它是通过了AQS的state值来进行计数。基本操作就是将当前主线程暂停,等到其它线程执行完成以后,再唤醒主线程执行后续操作,达到其它线程可以在同一时间执行 CountDownLatch首先讲到的是await方法,因为await方法是会执行到,将主线程等待其余线程执行完成并调用CountDown减到state等于0再去执行后续操作 await方法实际是调用的AQS的acquireSharedInterrupti.原创 2021-05-28 16:39:06 · 230 阅读 · 0 评论 -
ReentrantLock之unlock()方法
这次来接着是ReentrantLock的unlock方法 首先是unlock方法,unlock方法的意思是释放锁,unlock是调用了Sync类的release方法,而调用的实际是AQS的release方法 AQS的release方法里面首先会调用Sync实现的tryRelease去尝试释放锁 tryRelease方法先通过获取当前锁的状态值减去1,然后判断当前释放锁的线程是不是当前监听线程,如果不是会抛出异常。继续是判断当前状态值是否大于0,因为只有加锁成功才会大于0,也就才能释放锁资源。如果释放.原创 2021-05-19 16:12:54 · 1093 阅读 · 0 评论 -
ReentrantLock之lock()方法
说到ReentrantLock,就会说到AQS(AbstractQueuedSynchronizer),如果AQS不了解的朋友,最好去了解一下AQS,因为ReentrantLock内部只是去操作加锁,而真正加锁是控制AQS的state状态。 上图是ReentrantLock的部分实现。因为只讲到lock,我也就只会看lock方法相关的,里面有一个Sync的内部类,这个内部类继承自AQS,然后,外面有一个这个内部类的锁对象,在后面会用到,Sync类里面有一个lock的抽象方法是留给子类去实现的。子类就包.原创 2021-05-14 09:57:31 · 3478 阅读 · 1 评论