多线下,CountDownLatch,Future的使用
来源:互联网 发布:淘宝童装店铺起名 编辑:程序博客网 时间:2024/06/01 12:16
在处理业务的时候,往往需要发起多个线程去查询,处理,然后等待所有线程执行完,再进行业务合并处理。
1,CountDownLatch的使用
CountDownLatch更像是一个计数器,可以设置线程数,进行递减。countDownLatch.countDown();线程处理完以后减少,countDownLatch.await();等待所有的线程处理完。举例:
public class CountDownLatchTest {public static void main(String[] args){ final CountDownLatch countDownLatch = new CountDownLatch(5); for (int i = 0; i < 5; i++) { final int no = i; new Thread(new Runnable() { @Override public void run() { System.out.println(no); } }).start(); countDownLatch.countDown(); } try { countDownLatch.await(); System.out.println("线程执行完了"); } catch (InterruptedException e) { e.printStackTrace(); }}
}
2,Future的使用
Future结合Callable的使用,线程可以有返回值。举例:
public class FutureTest {
public static void main(String[] args) {
ExecutorService threadPool = Executors.newCachedThreadPool();
List< Future> futureList = new ArrayList Future();
for (int i = 0; i < 5; i++) {
//FutureTask也可以使用
Future future = threadPool.submit(new Callable() {
@Override
public Integer call() throws Exception {
return new Random().nextInt(10);
}
});
futureList.add(future);
}
for (Future f : futureList) {
try {
System.out.println(f.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
}
3.CyclicBarrier比CountDownLatch的使用场景更复杂,自行了解。
- 多线下,CountDownLatch,Future的使用
- CountDownLatch 的使用
- CountDownLatch的使用
- Android CountDownLatch的使用
- CountDownLatch的使用
- CountDownLatch的使用
- CountDownLatch 类的使用
- CountDownLatch的使用
- CountDownLatch的使用
- CountDownLatch的使用
- CountDownLatch的使用
- CountDownLatch的使用
- CountDownLatch的使用例子
- CountDownLatch的使用 Java
- callable&future的使用
- Future的使用
- Future的使用
- Future的使用
- 【Web】Ajax基本使用
- Unity Shader之Post Effect抖动重影效果
- Java中的多线程你只要看这一篇就够了
- Python实现Pat 1002. 写出这个数 (20)
- 支付宝APP支付密钥配置
- 多线下,CountDownLatch,Future的使用
- LeetCode7——Reverse Integer(将一个整数反转,注意溢出的处理)
- 亚像素级精确度的角点
- 实现sleep-mysleep
- Android在ImageView上做一些涂鸦
- 动态代理和静态代理以及spring的aop
- selenium环境配置
- EJB学习笔记_8_SessionBean生命周期
- php缓冲区详解