请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答

1回答

synchronized

是同步块,用来保证代码在多线程下的同步运行而使用的规范。

CountDownLatch

在内部其实是可以使用 synchronized 技术来实现,当然java的会更加高效。主要的目的是类似一个围栏结构。

此时有A B C两个线程,若A线程执行A-1方法后,想要执行A-2之前需要B、C线程对某些变量进行初始化;简单来说就是想要执行A-2需要保证某些操作已执行,数据已准备好。

但是对于B、C线程什么时候可以执行好,A并不知道;所以此时就需要CountDownLatch来完成这个过程。

此时在A线程中创建一个CountDownLatch实例,并且传入值为2,意思就是需要衰减2次后才释放当前的等待。

此时A将CountDownLatch实例传递给B、C并且,自己调用CountDownLatch实例的等待操作,此时就会等待衰减到0,已到0时调用将不会阻塞。

当B执行好了就会调用CountDownLatch实例的countDown衰减一次,C也是一样;当B、C都调用后,此时A收到已到0的信号,就会接着往下走了。





2 回复 有任何疑惑可以回复我~
  • 提问者 慕勒6194056 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-11-26 18:01:49
  • 提问者 慕勒6194056 #2
    是不是有几个方法CountDownLatch实例后面的参数就写几,然后每完成一个方法就衰减一次呢
    回复 有任何疑惑可以回复我~ 2018-11-26 18:03:48
  • Qiujuer 回复 提问者 慕勒6194056 #3
    这个具体取决于你的业务。
    回复 有任何疑惑可以回复我~ 2018-11-26 18:39:23
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信