You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
------------------ 原始邮件 ------------------
发件人: "YangGuang"<notifications@github.com>;
发送时间: 2020年3月27日(星期五) 上午10:05
收件人: "Snailclimb/JavaGuide"<JavaGuide@noreply.github.com>;
抄送: "张亚川"<997151683@qq.com>; "Comment"<comment@noreply.github.com>;
主题: Re: [Snailclimb/JavaGuide] 关于AQS组件部分的文章的错误 (#645)
CountDownLatch允许 count 个线程阻塞在一个地方,直至所有线程的任务都执行完毕。
拜读了上面楼主写的东西,我对这句话有些疑惑,CountDownLatch不应该是允许一到多个线程阻塞,直至count个线程的任务完成,然后唤醒阻塞的线程嘛,烦请解释!
不好意思,我的描述确实有问题,给各位造成误解了。。
应该是允许多个线程阻塞,直至count个线程执行完毕,然后unpark阻塞的线程。
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
------------------ 原始邮件 ------------------
发件人: "YangGuang"<notifications@github.com>;
发送时间: 2020年3月27日(星期五) 中午11:43
收件人: "Snailclimb/JavaGuide"<JavaGuide@noreply.github.com>;
抄送: "张亚川"<997151683@qq.com>; "Comment"<comment@noreply.github.com>;
主题: Re: [Snailclimb/JavaGuide] 关于AQS组件部分的文章的错误 (#645)
我关于CountDownLatch的说法和你的是一样的,但是你的的确准确一些,以后我会组织好语言的。
至于你说的CountDownLatch和CyclicBarrier的区别,这个我觉得看个人理解吧,CountDownLatch使用的是AQS实现的,CyclicBarrier使用的是ReentrantLock实现的,虽然都属于AQS,但这也是它们一个不同点吧,CyclicBarrier的实现更复杂写。在我看来,对它们最最最简单的理解就是CyclicBarrier可以允许多次阻塞,而CountDownLatch只能够阻塞一次。
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
没事没事,就是对于我这种人可能理解能力没那么强,容易误解。 …
------------------ 原始邮件 ------------------ 发件人: "YangGuang"<notifications@github.com>; 发送时间: 2020年3月27日(星期五) 中午11:43 收件人: "Snailclimb/JavaGuide"<JavaGuide@noreply.github.com>; 抄送: "张亚川"<997151683@qq.com>; "Comment"<comment@noreply.github.com>; 主题: Re: [Snailclimb/JavaGuide] 关于AQS组件部分的文章的错误 (#645) 我关于CountDownLatch的说法和你的是一样的,但是你的的确准确一些,以后我会组织好语言的。 至于你说的CountDownLatch和CyclicBarrier的区别,这个我觉得看个人理解吧,CountDownLatch使用的是AQS实现的,CyclicBarrier使用的是ReentrantLock实现的,虽然都属于AQS,但这也是它们一个不同点吧,CyclicBarrier的实现更复杂写。在我看来,对它们最最最简单的理解就是CyclicBarrier可以允许多次阻塞,而CountDownLatch只能够阻塞一次。 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
------------------ 原始邮件 ------------------
发件人: "YangGuang"<notifications@github.com>;
发送时间: 2020年3月27日(星期五) 中午11:53
收件人: "Snailclimb/JavaGuide"<JavaGuide@noreply.github.com>;
抄送: "张亚川"<997151683@qq.com>; "Comment"<comment@noreply.github.com>;
主题: Re: [Snailclimb/JavaGuide] 关于AQS组件部分的文章的错误 (#645)
没事没事,就是对于我这种人可能理解能力没那么强,容易误解。
…
------------------ 原始邮件 ------------------ 发件人: "YangGuang"<notifications@github.com>; 发送时间: 2020年3月27日(星期五) 中午11:43 收件人: "Snailclimb/JavaGuide"<JavaGuide@noreply.github.com>; 抄送: "张亚川"<997151683@qq.com>; "Comment"<comment@noreply.github.com>; 主题: Re: [Snailclimb/JavaGuide] 关于AQS组件部分的文章的错误 (#645) 我关于CountDownLatch的说法和你的是一样的,但是你的的确准确一些,以后我会组织好语言的。 至于你说的CountDownLatch和CyclicBarrier的区别,这个我觉得看个人理解吧,CountDownLatch使用的是AQS实现的,CyclicBarrier使用的是ReentrantLock实现的,虽然都属于AQS,但这也是它们一个不同点吧,CyclicBarrier的实现更复杂写。在我看来,对它们最最最简单的理解就是CyclicBarrier可以允许多次阻塞,而CountDownLatch只能够阻塞一次。 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
我也是。这个是我正在写的一份开源文档资料,如果你有好的想法,可以pr: framework-learning
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
Activity
Snailclimb commentedon Mar 13, 2020
收到!
Snailclimb commentedon Mar 13, 2020
同时
fastkeeper commentedon Mar 26, 2020
CountDownLatch允许 count 个线程阻塞在一个地方,直至所有线程的任务都执行完毕。
拜读了上面楼主写的东西,我对这句话有些疑惑,CountDownLatch不应该是允许一到多个线程阻塞,直至count个线程的任务完成,然后唤醒阻塞的线程嘛,烦请解释!
guang19 commentedon Mar 27, 2020
不好意思,我的描述确实有问题,给各位造成误解了。。
应该是允许多个线程阻塞,直至count个线程执行完毕,然后unpark阻塞的线程。
fastkeeper commentedon Mar 27, 2020
guang19 commentedon Mar 27, 2020
我关于CountDownLatch的说法和你的是一样的,但是你的的确准确一些,以后我会组织好语言的。
至于你说的CountDownLatch和CyclicBarrier的区别,这个我觉得看个人理解吧,CountDownLatch使用的是AQS实现的,CyclicBarrier使用的是ReentrantLock实现的,虽然都属于AQS,但这也是它们一个不同点吧,CyclicBarrier的实现更复杂写。在我看来,对它们最最最简单的理解就是CyclicBarrier可以允许多次阻塞,而CountDownLatch只能够阻塞一次。
fastkeeper commentedon Mar 27, 2020
guang19 commentedon Mar 27, 2020
我也是。这个是我正在写的一份开源文档资料,如果你有好的想法,可以pr: framework-learning
fastkeeper commentedon Mar 27, 2020
guang19 commentedon Mar 27, 2020
感谢!!!
Hogantry commentedon Jun 11, 2020
嗯嗯,还有,关于CountDownLatch。当调用await方法的时候,如果state不为0,就代表仍然有线程没有调用countDown方法,那么就把已经调用过countDown的线程都放入阻塞队列Park,并自旋CAS判断state == 0,直至最后一个线程调用了countDown,使得state == 0,于是阻塞的线程便判断成功,全部往下执行。
将调用过countDown的线程都放入阻塞队列Park,改成将所有调用await的线程都放入阻塞队列Park