java多线程 callable和future学习
来源:互联网 发布:java 异或 php 编辑:程序博客网 时间:2024/05/19 12:37
执行一个线程,取得线程返回的结果
callable 返回一个结果,future取到返回的结果。
尝试使用的一个例子,实际中很多场景可以用到
package test;import java.util.Random;import java.util.concurrent.Callable;import java.util.concurrent.CompletionService;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorCompletionService;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;import java.util.concurrent.TimeUnit;import java.util.concurrent.TimeoutException;public class Test { public static void main(String[] args) throws InterruptedException, ExecutionException, TimeoutException { ExecutorService threadPool = Executors.newSingleThreadExecutor(); Future<String> future = threadPool.submit(new Callable<String>() { @Override public String call() throws Exception { Thread.sleep(200); return "Hello Honey"; } });//提交返回的结果 System.out.println("等待结果"); System.out.println("拿到结果:" + future.get(1, TimeUnit.SECONDS));//future可以添加参数,此处超过一秒没有取到,我就不取了 ExecutorService threadPool2 = Executors.newFixedThreadPool(10);//提交一批量的结果,然后,立刻获得先获得的结果,同时捕获。应用需要查找 CompletionService<Integer> completionService = new ExecutorCompletionService<Integer>(threadPool2); for (int i = 0; i < 10; i++) { final int finalI = i; completionService.submit(new Callable<Integer>() { @Override public Integer call() throws Exception { Thread.sleep(new Random().nextInt(5000)); return finalI; } }); } for (int i = 0; i < 10; i++) { System.out.println(completionService.take().get()); } }}
1 0
- java多线程 callable和future学习
- java多线程Callable和Future
- Java多线程--Callable和Future
- Java Callable和Future学习
- java多线程学习笔记:使用Callable和Future
- 多线程Callable和Future
- 多线程 :Callable和Future
- Java多线程之 Callable、Future和FutureTask
- java多线程Future和Callable用法
- Java 多线程线程池 - Callable和Future
- Java多线程之Callable和Future
- Java多线程之Callable、Future和FutureTask
- java多线程之Callable和Future
- Java多线程:Callable、Future和FutureTask
- java多线程之Callable和Future
- Java多线程系列--Callable和Future
- Java多线程:Callable、Future和FutureTask
- java多线程获取结果 Callable和Future
- [LeetCode]010-Regular Expression Matching
- LayoutInflater源码分析
- 解决CocoaPods各种慢的方案(gem换源+pod repo换源)
- MyBatis的association示例以及association的两种形式
- 我的电脑的ADT软件解决Fail to create the java Virtual Machine问题
- java多线程 callable和future学习
- 计算机技术领域当前的主流技术及其社会需求调查报告
- 黑马程序员—— OC加强---ARC+Category+Block
- 限制文本框只能输入整数
- 《奥赛经典——数据结构篇》 3.4队列习题
- mysql部分数据复制
- windows环境下训练caffe中cifar10数据集
- hdu 确定比赛名次
- linux 信号设计 --不断补充--欢迎指正讨论