![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC
文章平均质量分 96
liao0801_123
这个作者很懒,什么都没留下…
展开
-
semaphore(信号量)内部实现原理
Semaphore用于管理信号量,在并发编程中,可以控制返访问同步代码的线程数量。Semaphore在实例化时传入一个int值,也就是指明信号数量。主要方法有两个:acquire()和release()。acquire()用于请求信号,每调用一次,信号量便少一个。release()用于释放信号,调用一次信号量加一个。信号量用完以后,后续使用acquire()方法请求信号的线程便会加入阻塞队列挂起。本篇简单分析Semaphore的源码,说明其实现原理。 Semaphore对于信号量的控制是基于AQS(转载 2020-07-06 01:19:36 · 2150 阅读 · 0 评论 -
CountDownLatch内部实现原理, 基于AQS
CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。CountDownLatch使用示例:首先我们写一个示例,看看怎么使用CountDownLatch工具类CountDownLatchTest.java 1 2 3 4 5 6 7 8 9 10 11 12 13转载 2020-07-06 01:00:12 · 367 阅读 · 0 评论 -
深入分析AQS原理
写在前面:实现的关键:CLH,state非公平锁的锁抢占是在各node(thread)入CLH队列的时候确定的, head节点释放锁之后,CLH链上的节点依次获得锁.而不是释放锁之后再进行抢占.从Lock作为切入点我想以lock作为切入点来讲解AQS,毕竟同步锁是解决线程安全问题的通用手段,也是我们工作中用得比较多的方式。Lock APILock是一个接口,方法定义如下void lock() // 如果锁可用就获得锁,如果锁不可用就阻塞直到锁释放void lockInte.原创 2020-06-03 15:36:22 · 470 阅读 · 0 评论