From cddee61f3f11f3c02430c01e9cd0f7e1ba3bbb2b Mon Sep 17 00:00:00 2001 From: Snailclimb Date: Mon, 16 Dec 2019 17:41:09 +0800 Subject: [PATCH] Update AQS.md --- docs/java/Multithread/AQS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/java/Multithread/AQS.md b/docs/java/Multithread/AQS.md index 55ec70b5..b2aae5c4 100644 --- a/docs/java/Multithread/AQS.md +++ b/docs/java/Multithread/AQS.md @@ -680,6 +680,8 @@ threadnum:7is finish #### 5.4 CyclicBarrier 和 CountDownLatch 的区别 +**下面这个是国外一个大佬的回答:** + CountDownLatch 是计数器,只能使用一次,而 CyclicBarrier 的计数器提供 reset 功能,可以多次使用。但是我不那么认为它们之间的区别仅仅就是这么简单的一点。我们来从 jdk 作者设计的目的来看,javadoc 是这么描述它们的: > CountDownLatch: A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.(CountDownLatch: 一个或者多个线程,等待其他多个线程完成某件事情之后才能执行;) @@ -689,8 +691,6 @@ CountDownLatch 是计数器,只能使用一次,而 CyclicBarrier 的计数 CountDownLatch 是计数器,线程完成一个记录一个,只不过计数不是递增而是递减,而 CyclicBarrier 更像是一个阀门,需要所有线程都到达,阀门才能打开,然后继续执行。 -![CyclicBarrier和CountDownLatch的区别](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/Java%20%E7%A8%8B%E5%BA%8F%E5%91%98%E5%BF%85%E5%A4%87%EF%BC%9A%E5%B9%B6%E5%8F%91%E7%9F%A5%E8%AF%86%E7%B3%BB%E7%BB%9F%E6%80%BB%E7%BB%93/AQS333.png) - ### 6 ReentrantLock 和 ReentrantReadWriteLock ReentrantLock 和 synchronized 的区别在上面已经讲过了这里就不多做讲解。另外,需要注意的是:读写锁 ReentrantReadWriteLock 可以保证多个线程可以同时读,所以在读操作远大于写操作的时候,读写锁就非常有用了。 -- GitLab