特点:当递增到规定的数值之后,才执行方法。

    1. import java.util.concurrent.BrokenBarrierException;
    2. import java.util.concurrent.CyclicBarrier;
    3. public class CyclicBarrierDemo {
    4. public static void main(String[] args) {
    5. /**
    6. * 集齐7颗龙珠召唤神龙
    7. */
    8. // 召唤龙珠的线程
    9. CyclicBarrier cyclicBarrier = new CyclicBarrier(8,()->{
    10. System.out.println("召唤神龙成功!");
    11. });
    12. for (int i = 1; i <=7 ; i++) {
    13. final int temp = i;
    14. // lambda能操作到 i 吗
    15. new Thread(()->{
    16. System.out.println(Thread.currentThread().getName()+"收集"+temp+"个龙珠");
    17. try {
    18. cyclicBarrier.await(); // 等待
    19. } catch (InterruptedException e) {
    20. e.printStackTrace();
    21. } catch (BrokenBarrierException e) {
    22. e.printStackTrace();
    23. }
    24. }).start();
    25. }
    26. }
    27. }