多线程CyclicBarrier怎么在java中使用(cyclicbarrier,java,多线程,开发技术)

时间:2024-04-30 04:23:07 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    %E5%A4%9A%E7%BA%BF%E7%A8%8BCyclicBarrier%E6%80%8E%E4%B9%88%E5%9C%A8java%E4%B8%AD%E4%BD%BF%E7%94%A8

一个同步辅助类,用于协调多个子线程,让多个子线程在这个屏障前等待,直到所有子线程都到达了这个屏障时,再一起继续执行后面的动作。

年末公司组织团建,要求每一位员工周六上午8点【自驾车】到公司门口集合,然后【自驾车】前往目的地。

在这个案例中,公司作为主线程,员工作为子线程。

打印输出可能的结果:

子线程执行了await()方法,必须等待其它所有子线程执行await()方法之后,才能一起继续后续的(await后main的)工作,就像上面的例子,所有自驾车必须都到达公司大门口之后,才能一起继续各自自驾车前往目的地。

但,主线程await()之后的工作与子线程await()之后的工作是不受影响的,只要所有的子线程执行了await()方法,主线程此时就可以后续的工作了,不必管子线程await()方法后续工作的情况。

1)、构造两者对象传入的参数不一样:构造CyclicBarrier比构造CountDownLatch的参数大了1,原因是构造CyclicBarrier的数量表示的是调用await()的次数,构造CountDownLatch的数量表示的是调用countDown()的次数;

2)、子线程调用了barrier.await()之后,必须等待所有子线程都完成barrier.await()调用后才能一起继续后续自己的工作,而子线程调用latch.countDown()之后,会继续子线程自己的工作,不用等待其它子线程latch.countDown()调用情况。

3)、CyclicBarrier可以循环使用,而CountDownLatch不是循环使用的。

4)、程序对比可以看:java多线程CountDownLatch及线程池ThreadPoolExecutor/ExecutorService使用案例

补充:CyclicBarrier的使用,多线程'同时'启动

我就废话不多说了,大家还是直接看代码吧~

本文:多线程CyclicBarrier怎么在java中使用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:怎么将Python项目telnet到网络设备下一篇:

2 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18