countDownLatch和Semaphore

 

countDOwnLatch:当线程1调用await方法那么就会阻塞,线程2,线程3,线程4分别调用countDown方法,当线程4调用countDown方法那么阻塞的队列不管有多少个都会依此唤醒,并不会像AQS中的当一把锁释放时只会唤醒第一个线程所对应的节点,不论公平锁还是非公平锁,例如Reetrantlock就是基于AQS

Semaphore:生成3个权限,相当于生成了三把锁,线程1,线程2,线程3都调用了acquire方法,拿到了锁并运行,但是此时锁已用完,当线程4调用时,则会阻塞,知道某一个线程调用release方法释放了锁,线程4才可以拿到锁运行

 

posted @ 2022-10-21 19:37  京木木  阅读(51)  评论(0)    收藏  举报