CyblicBarrier使用之BrokenBarrierException
来源:互联网 发布:知乎盈利了吗 编辑:程序博客网 时间:2024/06/09 22:58
闲话少说,直接上demo.
package com.ilucky.test.jdk.util.concurrent;import java.util.Date;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/** * BrokenBarrierException * @author IluckySi * */public class CyclicBarrierTest2 { public static void main(String[] args) { CyclicBarrier cb = new CyclicBarrier(3); new CyclicBarrierTestT21(cb).start(); new CyclicBarrierTestT22(cb).start();; new CyclicBarrierTestT23(cb).start(); }}class CyclicBarrierTestT21 extends Thread { private CyclicBarrier cb; CyclicBarrierTestT21(CyclicBarrier cb) { this.cb = cb; } public void run() { try { Thread.sleep(1000); cb.await(); } catch (BrokenBarrierException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(new Date() + "name =" + Thread.currentThread().getName()); }}class CyclicBarrierTestT22 extends Thread { private CyclicBarrier cb; CyclicBarrierTestT22(CyclicBarrier cb) { this.cb = cb; } public void run() { try { Thread.sleep(2000); // 中断当前线程, 会导致其他线程抛出BrokenBarrierException异常, 如果其他线程捕获了这个异常, 则会继续执行, 否则不会再继续执行. Thread.currentThread().interrupt(); cb.await(); } catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } System.out.println(new Date() + "name =" + Thread.currentThread().getName()); }}class CyclicBarrierTestT23 extends Thread { private CyclicBarrier cb; CyclicBarrierTestT23(CyclicBarrier cb) { this.cb = cb; } public void run() { try { Thread.sleep(5000); cb.await(); } catch (BrokenBarrierException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(new Date() + "name =" + Thread.currentThread().getName()); }}/**java.util.concurrent.BrokenBarrierException at java.util.concurrent.CyclicBarrier.dowait(CyclicBarrier.java:243) at java.util.concurrent.CyclicBarrier.await(CyclicBarrier.java:355) at com.ilucky.test.jdk.util.concurrent.CyclicBarrierTestT21.run(CyclicBarrierTest2.java:32)Fri May 12 10:24:53 GMT+08:00 2017name =Thread-0java.lang.InterruptedException at java.util.concurrent.CyclicBarrier.dowait(CyclicBarrier.java:204) at java.util.concurrent.CyclicBarrier.await(CyclicBarrier.java:355) at com.ilucky.test.jdk.util.concurrent.CyclicBarrierTestT22.run(CyclicBarrierTest2.java:54)Fri May 12 10:24:53 GMT+08:00 2017name =Thread-1java.util.concurrent.BrokenBarrierException at java.util.concurrent.CyclicBarrier.dowait(CyclicBarrier.java:200) at java.util.concurrent.CyclicBarrier.await(CyclicBarrier.java:355) at com.ilucky.test.jdk.util.concurrent.CyclicBarrierTestT23.run(CyclicBarrierTest2.java:75)Fri May 12 10:24:56 GMT+08:00 2017name =Thread-2*/
0 0
- CyblicBarrier使用之BrokenBarrierException
- CyblicBarrier使用
- 缓存之ehcache 之使用
- 缓存之ehcache 之使用
- 缓存之ehcache 之使用
- 缓存之ehcache 之使用
- Vim使用之使用技巧
- logstash使用之简单使用
- 使用c#之感想
- STL 之sort使用
- bpl 使用之我见
- MySQL5之使用经验
- 查询之Trim使用
- AWP之使用初步
- php之对象使用
- RPM之使用
- 使用Struts之ActionForm
- 使用Struts之ActionForm
- 【小练习03】CSS-表格(table)--天气预报
- 元素JS和jquery如何获取点击元素的id或name属性
- OA系统中常用table样式列表
- Qt5 中发布程序遇到could not find or load the Qt platform plugin "windows"
- ArrayList 和 LinkedList的区别
- CyblicBarrier使用之BrokenBarrierException
- 机器学习的精确率P,召回率R和F-score
- 分页page
- indexOf、lastIndexOf、substring等详解
- 算法——回朔法简介
- Extjs 代理加载grid store
- ajax 取出success函数中数据可使用回调函数
- 替换空格
- ssh