`
- 浏览:
159361 次
- 性别:
- 来自:
杭州
-
-
import
java.util.Random;
-
import
java.util.concurrent.CyclicBarrier;
-
-
-
-
-
-
-
-
-
-
-
public
class
CyclicBarrierTest {
-
-
public
static
class
ComponentThread
implements
Runnable {
-
CyclicBarrier barrier;
-
int
ID;
-
int
[] array;
-
-
-
public
ComponentThread(CyclicBarrier barrier,
int
[] array,
int
ID) {
-
this
.barrier = barrier;
-
this
.ID = ID;
-
this
.array = array;
-
}
-
-
public
void
run() {
-
try
{
-
array[ID] = new
Random().nextInt(
100
);
-
System.out.println("Component "
+ ID +
" generates: "
+ array[ID]);
-
-
System.out.println("Component "
+ ID +
" sleep..."
);
-
barrier.await();
-
System.out.println("Component "
+ ID +
" awaked..."
);
-
-
int
result = array[ID] + array[ID +
1
];
-
System.out.println("Component "
+ ID +
" result: "
+ result);
-
} catch
(Exception ex) {
-
}
-
}
-
}
-
-
-
-
public
static
void
testCyclicBarrier() {
-
final
int
[] array =
new
int
[
3
];
-
CyclicBarrier barrier = new
CyclicBarrier(
2
,
new
Runnable() {
-
-
public
void
run() {
-
System.out.println("testCyclicBarrier run..."
);
-
array[2
] = array[
0
] + array[
1
];
-
}
-
});
-
-
-
new
Thread(
new
ComponentThread(barrier, array,
0
)).start();
-
new
Thread(
new
ComponentThread(barrier, array,
1
)).start();
-
}
-
-
public
static
void
main(String[] args) {
-
CyclicBarrierTest.testCyclicBarrier();
-
}
-
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
主要介绍了java多线程之CyclicBarrier的使用方法的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
近研究了一个别人的源码,其中用到多个线程并行操作一个文件,并且在所有线程全部结束后才进行主线程后面的处理。 其用到java.util.concurrent.CyclicBarrier 这个类。 CyclicBarrier是一个同步辅助类,它允许...
1)CountDownLatch(同步倒数计数器:等待多线程(或者多步骤)完成) 2)CyclicBarrier(循环屏障:同步屏障) 3)Semaphore(信号量:控制并发进程数) 主要参考资料:java并发编程的艺术、Java并发——...
主要介绍了Java多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
看完《think in java》多线程章节,自己写的多线程文档,还结合了其他的相关网络资料。 线程 一. 线程池 1)为什么要使用线程池 2 2)一个具有线程池的工作队列 3 3)使用线程池的风险: 4 4)有效使用线程池的原则 5...
给大家分享了关于java多线程开发中通过对战游戏学习CyclicBarrier的相关知识点内容,有兴趣的朋友们学习参考下。
主要介绍了JAVA 多线程之信号量(Semaphore)实例详解的相关资料,需要的朋友可以参考下
目录线程安全 Thread Safety重入锁 ReentrantLock读写锁 ReadWriteLock倒计数器 CountDownLatch循环栅栏 CyclicBarrier信号量 Semaphore 线程安全 Thread Safety JMM JMM(Java Memory Model)是一种基于计算机内存...
【2018最新最详细】并发多线程教程,课程结构如下 1.并发编程的优缺点 2.线程的状态转换以及基本操作 3.java内存模型以及happens-before规则 4.彻底理解synchronized 5.彻底理解volatile 6.你以为你真的了解final吗...
CyclicBarrier是Java中的一个同步工具类,用于协调多个线程之间的同步。它的作用类似于CountDownLatch,可以让一个或多个线程等待其他线程执行完毕后再继续执行。 CyclicBarrier可以被看作是一个屏障,当所有线程都...
#Java多线程 #面试真题" 3、"深入理解线程池工作原理,掌握Executor框架下四种线程池的创建与应用,有效提升系统资源利用率。#Java线程池 #性能优化" 4、"线程状态流转图解析,从New到Runnable,再到Running,直至...
JUC(Java Util Concurrent)是Java中用于并发编程的工具包,提供了一组接口和类,用于处理多线程和并发操作。JUC提供了一些常用的并发编程模式和工具,如线程池、并发集合、原子操作等。 JUC的主要特点包括: ...
『死磕Java并发编程系列』 01 十张图告诉你多线程那些破事 『死磕Java并发编程系列』 02 面试官:说说什么是Java内存模型? 『死磕Java并发编程系列』 03 面试必问的CAS原理你会了吗? 『死磕Java并发编程系列』 04 ...
多线程控制的三大安全类:CountDownLatch、CyclicBarrier、Semaphore,这工具包将其封装,可以让初学者更容易学习以及让开发者更容易调用,不需要自己重新编写核心代码。具体事例在源码中。
Java并发之AQS详解 CountDownLatch CountDownLatch可以实现一个线程等待多个线程、多个线程等待一个线程、多个线程等待多个线程(这里不涉及)。 我们首先来看看怎么实现一个线程等待多个线程吧。 工厂中,对产品...
Java 5.0里新加了4个协调线程间进程的同步装置,它们分别是Semaphore, CountDownLatch, CyclicBarrier和Exchanger,本例主要介绍Semaphore,Semaphore是用来管理一个资源池的工具,可以看成是个通行证
【对线面试官】多线程基础 【对线面试官】 CAS 【对线面试官】同步进行 【对线面试官】AQS&&ReentrantLock 【对线面试官】线程池 【对线面试官】ThreadLocal 【对线面试官】CountDownLatch和CyclicBarrier 【对线...
一个支持多线程的服务器框架,GeneralServer.java; 代理服务器,ProxyServer.java; telnet客户端,访问系统的telnet服务实质上是与telnet服务建立socket连接,默认的telnet服务的端口是23,TelnetClient.java; ...
【多线程】简述synchronized 和java.util.concurrent.locks.Lock的异同? 90 【线程】ThreadLocal的作用 90 【Spring】什么是IOC和DI?DI是如何实现的 91 【Spring】spring中的IOC(控制反转)的原理 92 【Spring】...
由浅入深,通过图解和手写代码,讲解Java版的多线程,主要讲解如下内容: CPU运转机制 线程运行原理及线程状态 AQS原理&源码解读 线程同步+各种锁的原理&手写实现 JDK多线程工具包中,若干种工具的原理和手写实现: ...