- 浏览: 502544 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (310)
- PHP (46)
- Java (50)
- Perl (0)
- Bash (5)
- C# (9)
- JavaScript (5)
- InDesign (7)
- 百宝箱 (5)
- 排错 (3)
- 招聘 (5)
- PHP他山之石 (3)
- SQL(DML) (10)
- Flex (15)
- LAMP (1)
- DIV+CSS (1)
- C#2008 (4)
- LOGO (7)
- WorkLog (1)
- 工作 (26)
- Groovy (7)
- 海量数据 (4)
- C/C++ (1)
- Android (1)
- PYTHON (13)
- Java开发实战1200例 (1)
- Java枚举与泛型 (16)
- Java基础应用 (24)
- poj (3)
- Java数组与集合 (18)
- 疑难解析 (3)
- JavaWeb (8)
- Jython (2)
- 成功之路 (0)
- Golang (2)
- Spring (2)
- 微信小程序 (0)
最新评论
-
DawnBells:
...
java.util.concurrent 之六:使用Future类和Callable类 -
kanglecjr:
http://tieba.baidu.com/f?kz=101 ...
泰语字母好看的手写体 -
zxjlwt:
学习了。http://surenpi.com
java.util.concurrent 之六:使用Future类和Callable类 -
spring_springdata:
java jsoup开源框架demo使用实例教程源代码下载:h ...
JSOUP获取网页数据返回403错误(403 error loading URL,connection类) -
narochids:
MARK!
JavaScript+Ajax实例大全(1521例以上),可以随编辑随执行
在实际应用中,有时候需要多个线程同时工作以完成同一件事情,而且在完成过程中,往往会等待其他线程都完成某一阶段后再执行,等所有线程都到达某一个阶段后再统一执行。
比如有几个旅行团需要途经深圳、广州、韶关、长沙最后到达武汉。旅行团中有自驾游的,有徒步的,有乘坐旅游大巴的;这些旅行团同时出发,并且每到一个目的地,都要等待其他旅行团到达此地后再同时出发,直到都到达终点站武汉。
这时候 CyclicBarrier 就可以派上用场。CyclicBarrier最重要的属性就是参与者个数,另外最要方法是await()。当所有线程都调用了await()后,就表示这些线程都可以继续执行,否则就会等待。
可能的执行结果:
比如有几个旅行团需要途经深圳、广州、韶关、长沙最后到达武汉。旅行团中有自驾游的,有徒步的,有乘坐旅游大巴的;这些旅行团同时出发,并且每到一个目的地,都要等待其他旅行团到达此地后再同时出发,直到都到达终点站武汉。
这时候 CyclicBarrier 就可以派上用场。CyclicBarrier最重要的属性就是参与者个数,另外最要方法是await()。当所有线程都调用了await()后,就表示这些线程都可以继续执行,否则就会等待。
package test; import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class TestCyclicBarrier{ // 徒步需要的時間 private static int[] timeWalk = { 5, 8, 15, 15, 10 }; // 自駕遊 private static int[] timeSelf = { 1, 3, 4, 4, 5 }; // 旅遊大巴 private static int[] timeBus = { 2,4,6,6,7 }; static String now(){ SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); return sdf.format(new Date()) + ": "; } static class Tour implements Runnable{ private int[] times; private CyclicBarrier barrier; private String tourName; public Tour(CyclicBarrier barrier, String tourName, int[] times){ this.times=times; this.tourName=tourName; this.barrier=barrier; } public void run(){ try{ Thread.sleep(times[0]*1000); System.out.println(now() + tourName + " Reached Shenzhen"); barrier.await(); Thread.sleep(times[1]*1000); System.out.println(now() + tourName + " Reached Guangzhou"); barrier.await(); Thread.sleep(times[2]*1000); System.out.println(now() + tourName + " Reached Shaoguan"); barrier.await(); Thread.sleep(times[3]*1000); System.out.println(now() + tourName + " Reached Changsha"); barrier.await(); Thread.sleep(times[4]*1000); System.out.println(now() + tourName + " Reached Wuhan"); barrier.await(); }catch(InterruptedException e){ }catch(BrokenBarrierException e){ } } } public static void main(String[] args){ // 三個旅行團 CyclicBarrier barrier = new CyclicBarrier(3); ExecutorService exec = Executors.newFixedThreadPool(3); exec.submit(new Tour(barrier, "WalkTour", timeWalk)); exec.submit(new Tour(barrier, "SelfTour", timeSelf)); // exec.submit(new Tour(barrier, "BusTour", timeBus)); exec.shutdown(); } }
可能的执行结果:
21:47:18: SelfTour Reached Shenzhen 21:47:19: BusTour Reached Shenzhen 21:47:22: WalkTour Reached Shenzhen 21:47:25: SelfTour Reached Guangzhou 21:47:26: BusTour Reached Guangzhou 21:47:30: WalkTour Reached Guangzhou 21:47:34: SelfTour Reached Shaoguan 21:47:36: BusTour Reached Shaoguan 21:47:45: WalkTour Reached Shaoguan 21:47:49: SelfTour Reached Changsha 21:47:51: BusTour Reached Changsha 21:48:00: WalkTour Reached Changsha 21:48:05: SelfTour Reached Wuhan 21:48:07: BusTour Reached Wuhan 21:48:10: WalkTour Reached Wuhan
发表评论
-
2-02 Spring的Java配置方式
2018-09-07 05:25 5711) 在Eclipse中新建一个Maven项目。 2 ... -
多位置控制系统 以及 在线诊断系统 之设计
2015-05-29 08:01 876利用 Groovy 生成输入数据: def f = new ... -
管理密码集中化
2015-03-28 17:13 1168项目需求:把指定的Spring配置文件的指定密码提取出来, ... -
更改eclipse中java和jsp文件字体的大小
2014-11-27 07:15 14121.更改java文件大小设置 Window->pre ... -
14.8 Struts2 基础之 实践与练习
2014-11-25 08:32 67914.8 实践与练习 1. 实现用户的中间退出 ... -
Gradle 之插件 gretty 入门
2014-11-23 22:42 12658英文来源: http://akhikhl.github. ... -
Gradle学习系列之三——读懂Gradle语法
2014-11-23 20:15 2091在本系列的上篇文章中 ... -
Gradle学习系列之二——创建Task的多种方法
2014-11-23 19:46 663在本系列的上篇文章中 ... -
Gradle学习系列之一——Gradle快速入门
2014-11-23 19:24 1597这是一个关于Gradle的学习系列,其中包含以下文章: ... -
使用Maven2 原型(Archetype) 建立Struts程序框架(骨架)
2014-11-25 07:35 589使用Maven2 原型(Archet ... -
maven学习(上)- 基本入门用法
2014-11-25 07:35 814一、下载及安装 1.1 下载maven 3.1.1 ... -
JDBC连接MySQL
2014-11-18 08:05 1126前期准备工作,安好JDK,MyEclipse。 下载JDB ... -
Maven usage
2014-10-23 09:27 617P:\>mvn --help usage: m ... -
第1章 初识Java7
2014-10-22 08:17 841第1章 初识Java 7 本章内容: Java 既 ... -
eclipse性能优化
2014-10-19 02:34 697=>启动优化 Window > Prefer ... -
ora-01950:对表空间XXX无权限
2014-10-16 13:30 6220以前执行了grant dba to 用户 查了一下dba角 ... -
Missing artifact com.sun:tools:jar:1.5.0:system (转)
2014-10-16 09:41 952记得以前写过这个错误的解决方案,找了很长时间,自己都没找到 ... -
Mockito(一) -- 入门篇
2014-10-13 20:32 914Mockito是一种mock工具/ ... -
1.14 标准注解
2014-10-10 08:11 4961.14.1 The Built-In Annotation ... -
用Ant实现Java项目的自动构建和部署
2014-10-09 20:16 735原文地址:http://tech.it168.com/j/2 ...
相关推荐
Tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError),内附解决方案!
1. java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...
java并发工具包 java.util.concurrent中文版-带书签版
java.util.concurrent系列文章(1) java.util.concurrent系列文章(1) java.util.concurrent系列文章(1) java.util.concurrent系列文章(1)
主要介绍了java.util.concurrent.ExecutionException 问题解决方法的相关资料,需要的朋友可以参考下
backport-util-concurrent.jarbackport-util-concurrent.jarbackport-util-concurrent.jar
标签:atlassian-util-concurrent-0.0.12.jar.zip,atlassian,util,concurrent,0.0.12,jar.zip包下载,依赖包
java.util.concurrent总体概览图。 收取资源分3分。需要的同学可以下载一下。 java.util.concurrent主要包括5个部分executor,colletions,locks,atomic,tools。 该图详细的列举了并发包下面的结构,包含所有接口和...
java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...
java并发工具包 java.util.concurrent中文版pdf
java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:953) java.util.LinkedList$ListItr.next(LinkedList.java:886) JMeter.plugins.functional.samplers.websocket.ServiceSocket....
如何启动:以win7系统为例,最好jdk8 1.打开cmd,cd到jdk的path,本机是:cd C:\Java\jdk6\bin ...java -cp D:\javaConcurrentAnimated.jar vgrazi.concurrent.samples.launcher.ConcurrentExampleLauncher
java.util.ConcurrentModificationException 异常问题详解1
Java并发编程工具包java.util.concurrent的UML类结构图 PDF
JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用
java.util.concurrent系列文章(2) java.util.concurrent系列文章(2) java.util.concurrent系列文章(2) java.util.concurrent系列文章(2)
赠送jar包:protobuf-java-util-shaded-351-0.9.jar; 赠送原API文档:protobuf-java-util-shaded-351-0.9-javadoc.jar; 赠送源代码:protobuf-java-util-shaded-351-0.9-sources.jar; 赠送Maven依赖信息文件:...
花了一段时间辛苦整理的ppt,与大家分享,请提出您的宝贵意见。
java.util.concurrent-多线程框架