Java并发工具类
来源:互联网 发布:把事情做到极致 知乎 编辑:程序博客网 时间:2024/06/07 02:12
Java并发工具类
1、CountDownLatch
CountDownLatch首先定义任务次数,并调用await()方法等待任务完成。调用countDown()方法表明已经完成一项任务,当任务全部完成后,继续await()方法后的任务。public class CountDownLatchTest {public static void main(String[] args) throws InterruptedException {final CountDownLatch latch = new CountDownLatch(2);for (int i = 0; i < 2; i++) {new Thread() {public void run() {try {System.out.println(currentThread().getName() + " start");Thread.sleep(1000);latch.countDown();System.out.println(currentThread().getName() + " end");} catch (InterruptedException e) {e.printStackTrace();}}}.start();}System.out.println(Thread.currentThread().getName() + " start");latch.await();System.out.println(Thread.currentThread().getName() + " end");}}
2、CyclicBarrier
CyclicBarrier会等待所有的await()方法调用结束。public class CyclicBarrierTest {public static void main(String[] args) throws InterruptedException, BrokenBarrierException {final CyclicBarrier barrier = new CyclicBarrier(3);for (int i = 0; i < 3; i++) {new Thread() {public void run() {try {System.out.println(currentThread().getName() + " start");Thread.sleep(1000);barrier.await();System.out.println(currentThread().getName() + " end");} catch (Exception e) {e.printStackTrace();}}}.start();}}}
可以调用CyclicBarrier的另一个构造函数CyclicBarrier(int, Runnable),在await()方法后最先调用Runnable。
public class CyclicBarrierTest {public static void main(String[] args) throws InterruptedException, BrokenBarrierException {final CyclicBarrier barrier = new CyclicBarrier(3, new Thread() {public void run() {System.out.println("In CyclicBarrier");}});for (int i = 0; i < 3; i++) {new Thread() {public void run() {try {System.out.println(currentThread().getName() + " start");Thread.sleep(1000);barrier.await();System.out.println(currentThread().getName() + " end");} catch (Exception e) {e.printStackTrace();}}}.start();}}}
3、Executors
使用Executors可以生成线程池。newFixedThreadPool(int)newFixedThreadPool(int, ThreadFactory)newSingleThreadExecutor()newSingleThreadExecutor(ThreadFactory)newCachedThreadPool()newCachedThreadPool(ThreadFactory)
4、ThreadPoolExecutor
corePoolSize: 线程池维护线程的最少数量maximumPoolSize:线程池维护线程的最大数量
keepAliveTime: 线程池维护线程所允许的空闲时间
unit: 线程池维护线程所允许的空闲时间的单位
workQueue: 线程池所使用的缓冲队列
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, Executors.defaultThreadFactory(), defaultHandler); }
0 0
- Java并发工具类
- Java 并发工具类
- Java并发工具类
- Java并发工具类
- java并发之并发工具类
- Java并发编程(五)《并发工具类》
- Java并发工具类CountDownLatch
- Java并发工具类CyclicBarrier
- Java并发工具类LockSupport
- java中的并发工具类
- Java中的并发工具类
- Java并发工具类详解
- Java:线程并发工具类
- java中的并发工具类
- java中的并发工具类
- java 并发工具类-CountDownLatch
- java 并发工具类-CyclicBarrier
- java 并发工具类-Semaphore
- JAVA单例模式
- 修改ubuntu下网卡名不是eth0的问题
- 用纯css实现在矩形中切除一个圆(镂空效果)
- MacBook Pro成功安装Win To Go 8.1
- FileInputStream(输入流)字节流
- Java并发工具类
- java 1,2,3维数组定义,遍历
- Activity如何取消界面切换的默认动画
- 搭建Hibernate4开发环境并整合Spring3
- linux字符设备驱动
- Hadoop多用户配置
- #363 – 日历控件基础(Calendar Control Basics)
- Elasticsearch版本客户端与服务端版本不一致问题
- MyEclipse内存溢出问题解决方法