Thread_CallableAndFuture(线程池返回结果)
来源:互联网 发布:淘宝卖家怎么升级快 编辑:程序博客网 时间:2024/06/14 18:20
package com.gzhs.zsd.thread;
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;
/**
* 线程池Callable与Future应用
*/
public class Thread_CallableAndFuture {
public static void main(String[] args) { //线程池提交一个任务, 返回结果测试 //Thread_getFuture(); //线程池提交一组任务, 返回结果测试 Thread_CompletionService();}//线程提交并拿到Future返回结果public static void Thread_getFuture(){ //创建一个单独线程 ExecutorService thredPool = Executors.newSingleThreadExecutor(); //线程池提交, 获取Future结果 Future<String> future = thredPool.submit(new Callable<String>() { @Override public String call() throws Exception { Thread.sleep(2000); return "正常"; } }); try { System.out.println("等待检查结果: "); System.out.println("拿到检查结果: " + future.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); }}//线程池提交一组Callable任务, 采用take方法获取已完成的的一个Callable任务的Future结果public static void Thread_CompletionService(){ //创建一个10个大小的线程池 ExecutorService threadPool = Executors.newFixedThreadPool(10); //采用CompletionService提交一组任务 CompletionService<Integer> completionService = new ExecutorCompletionService<Integer>(threadPool); //循环提交10个人任务 for(int i = 1; i <= 10; i++){ final int task = i; completionService.submit(new Callable<Integer>() { @Override public Integer call() throws Exception { //随机等待 Thread.sleep(new Random().nextInt(10000)); return task; } }); } System.out.println("等待检查结果: "); //循环拿结果 for(int i = 1; i<= 10; i++){ Future<Integer> future = null; try { //如果,这里没拿到结果, 会一直等待之后, 拿到结果之后, 在往下执行 future = completionService.take(); System.out.println("拿到检查结果: " + future.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } }}
}
1 0
- Thread_CallableAndFuture(线程池返回结果)
- Java5中线程池与线程结果返回
- Java线程池及Future、Callable获得线程返回结果
- JDK5 获取线程返回结果
- jdk5以上自带线程池使用并返回结果
- Java线程池及Future、Callable获得线程返回结果【Java线程池系列2】
- 第八部分 返回结果的线程
- 多线程 : 使用 Future 获取线程返回结果
- CompletionService + Callable实现线程动态返回结果
- Java 多线程 Executor 线程池 从线程返回结果 Java编程思想读书笔记
- 线程池等待一定数目的线程执行完毕之后返回结果
- java线程池——接收线程运行后返回的结果
- 返回结果线程—等待单个线程(搬迁至此)
- 返回结果的线程-等待一组线程(搬迁至此)
- 开线程池在子线程下载,用接口回调与Handler返回结果
- Java:多线程,线程池,使用CompletionService通过Future来处理Callable的返回结果
- 管理线程池处理任务的返回结果的两种方法
- Java:多线程,线程池,使用CompletionService通过Future来处理Callable的返回结果
- 【原创】如何确定Kafka的分区数、key和consumer线程数
- java调用CMD完成文件复制
- EF(Linq)框架使用过程中的小技巧汇总
- Django权限机制的实现
- PocketSphinx语音识别系统语言模型的训练和声学模型的改进
- Thread_CallableAndFuture(线程池返回结果)
- 使用jquery-validate进行表单验证
- 数字黑洞20160802(网易校招内推笔试题目)
- 解决远程桌面关闭后teamviewer不能连接的问题
- 安卓开发中Theme.AppCompat.Light的解决方法
- GitLab忘记管理员密码/重置密码
- Socket编程
- 约瑟夫问题(双向循环链表)
- mac下idea工具快捷键使用