博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 线程 障碍器
阅读量:6426 次
发布时间:2019-06-23

本文共 1492 字,大约阅读时间需要 4 分钟。

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("主任务最后执行....");    }}

 程序执行结果:

 

 

来源

转载于:https://www.cnblogs.com/Westfalen/p/6233517.html

你可能感兴趣的文章
juery 选择器 选择多个元素
查看>>
【新手向】TensorFlow 安装教程:RK3399上运行谷歌人工智能
查看>>
Oracle Net Configuration(监听程序和网络服务配置)
查看>>
c语言_判断例子
查看>>
ubuntu重启不清除 /tmp 设置
查看>>
面向对象
查看>>
JSON
查看>>
SAP发布wbservice,如果有权限管控的话,需要给这个webservice加权限
查看>>
16.Python网络爬虫之Scrapy框架(CrawlSpider)
查看>>
stm 常用头文件
查看>>
mac 删除文件夹里所有的.svn文件
查看>>
程序制作 代写程序 软件定制 代写Assignment 网络IT支持服务
查看>>
mysql 案例~select引起的性能问题
查看>>
直接读取图层
查看>>
springsecurity 源码解读 之 RememberMeAuthenticationFilter
查看>>
HTML5标准学习 - 编码
查看>>
JS 时间戳转星期几 AND js时间戳判断时间几天前
查看>>
UVa11426 最大公约数之和(正版)
查看>>
mime
查看>>
SQL练习之求解填字游戏
查看>>