Callable和Future的应用
来源:互联网 发布:linux系统下载iso mac 编辑:程序博客网 时间:2024/06/10 11:47
- Callable和Future这两个组合一起可以实现:
- 程序启动一个线程,然后线程运行完以后,它可以给我们返回结果
public class CallableAndFuture { public static void main(String[] args) { ExecutorService threadPool = Executors.newSingleThreadExecutor(); Future<String> future = //Future取得的结果类型和Callable返回的结果类型必须一致,这是通过泛型来实现的 threadPool.submit(new Callable<String>() {//Callable要采用ExecutorSevice的submit方法提交,返回的future对象可以取消任务;这里如果使用execute(Runnable command)方法,则没有返回值 @Override public String call() throws Exception { Thread.sleep(2000); return "hello"; } }); System.out.println("等待结果"); try { System.out.println("拿到结果:"+future.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } }}
public class CallableAndFuture { public static void main(String[] args) { ExecutorService threadPool = Executors.newSingleThreadExecutor(); Future<String> future = threadPool.submit(new Callable<String>() { @Override public String call() throws Exception { Thread.sleep(2000); return "hello"; } }); System.out.println("等待结果"); try { System.out.println("拿到结果:"+future.get(1, TimeUnit.SECONDS));//没有结果就抛异常 } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } catch (TimeoutException e) { e.printStackTrace(); } }}
- CompletionService用于提交一组Callable任务,其take方法返回已完成的一个Callable任务对应的Future对象
- 好比我同时种了几块地的麦子,然后就等待收割。收割时,则是哪块先成熟了,则先去收割哪块麦子
ExecutorService threadPool2 = Executors.newFixedThreadPool(10); CompletionService<Integer> completionService = new ExecutorCompletionService<Integer>(threadPool2); for(int i = 1 ;i<=10;i++) { final int seq = i ; completionService.submit(new Callable<Integer>() { @Override public Integer call() throws Exception { Thread.sleep(2000); return seq; } }); } for(int i = 0 ;i<=10;i++){ try { System.out.println(completionService.take().get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } }
阅读全文
1 0
- Callable和Future的应用
- Callable和Future的应用
- 十、Callable和Future的应用
- Callable与Future的应用
- Callable与Future的应用
- Callable和Future的应用-笔记整理8
- Callable 和 Future 的试用
- Callable和Future 的学习
- Callable和future的使用
- java 之 Callable 与 Future 的应用
- Java Callable Future的简单应用
- java5线程 Callable与Future的应用
- 10-Callable与Future的应用
- 【java并发】Callable与Future的应用
- Java并发:Callable与Future的应用
- Future接口和Callable接口的使用
- 黑马程序员:Callable和Future的用法
- 《黑马程序员》 Callable和Future的练习
- Sequence Modeling With CTC
- zookeeper连接超时异常
- Gradle的安装与配置(Windows)
- 习题9.1
- 备忘:jupyter notebook 更改默认目录
- Callable和Future的应用
- 红黑树
- Docker部署Rabbitmq集群及实现定时消息
- 文章标题
- 面向非专家的DL系列之一:深度学习的4个突破
- Java并发编程视频教程
- ISCSI
- [LearnOpenGL]C0:项目简介
- pip安装 matplotlib 时问题记录