• java 线程 障碍器


    package de.bvb;
    
    import java.util.concurrent.CyclicBarrier;
    import java.util.concurrent.TimeUnit;
    
    /**
     * java 线程 障碍器
     * 
     * Java5中,添加了障碍器类,为了适应一种新的设计需求,
     * 比如一个大型的任务,常常需要分配好多子任务去执行,只有当所有子任务都执行完成时候
     * ,才能执行主任务,这时候,就可以选择障碍器了。 
     *
     */
    public class Test4 {
        public static void main(String[] args) {
            final int subTaskCounts = 5;
            Thread mainTask = new Thread(new MainTask());
            // 不能调用start方法,障碍器中会自动调用start方法,否则主任务可能会立即执行
            // mainTask.start();
            CyclicBarrier cyclicBarrier = new CyclicBarrier(subTaskCounts, mainTask);
            for (int i = 0; i < subTaskCounts; i++) {
                Thread subTask = new Thread(new SubTask("任务" + i, cyclicBarrier));
                subTask.start();
            }
        }
    }
    
    class SubTask implements Runnable {
        private String taskName;
        private CyclicBarrier cyclicBarrier;
    
        public SubTask(String taskName, CyclicBarrier cyclicBarrier) {
            super();
            this.taskName = taskName;
            this.cyclicBarrier = cyclicBarrier;
        }
    
        @Override
        public void run() {
            try {
                System.out.println(taskName + "开始执行任务...");
                TimeUnit.SECONDS.sleep(2);// 模拟耗时任务
                System.out.println(taskName + "已经执行完了,并通知障碍器已经完成");
                cyclicBarrier.await();// 通知障碍器已经完成
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    }
    
    class MainTask implements Runnable {
        @Override
        public void run() {
            System.out.println("主任务最后执行....");
        }
    }

     程序执行结果:

    来源 http://lavasoft.blog.51cto.com/62575/222738

  • 相关阅读:
    python中有哪些类型的布尔值是False?
    django中间件(获取请求ip)
    用python进行月份加减的函数
    Python取整函数
    Python里面search()和match()的区别
    在追灿公司的学习笔记
    Maven学习笔记
    天梯赛练习 L3-006 迎风一刀斩 (30分) 几何关系
    PAT甲级 1155 Heap Paths (30分) 堆模拟
    天梯赛练习 L3-016 二叉搜索树的结构 (30分)
  • 原文地址:https://www.cnblogs.com/Westfalen/p/6233517.html
Copyright © 2020-2023  润新知