concurrent包Callable接口
来源:互联网 发布:药源网数据库 编辑:程序博客网 时间:2024/05/21 13:58
1.Callable接口与Runnable接口区别:
(1).实现Callable接口和Runnable接口实现类,都是可以被线程执行的任务
(2).Callable接口抛异常,Runnable接口不抛异常
(3).Callable任务运行后,可以获取oncurrent包Future对象,Future对象可以获取任务返回值,Future表示异步计算的结果,提供了检测计算是否完成的方法get(),通过cancel(task)方法,可以取消执行中的任务 Runnable接口不行
(4).类实现Callable接口,要实现Call方法,类实现Runnable接口,要实现run()方法
public class CallableDemo implements Callable { private int flag; public CallableDemo(int flag) { this.flag = flag; } public String call() throws Exception { if (0 == flag) { return "0"; } else if (1 == flag) { Thread.sleep(10000); } return "bad parameter"; } public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(4); CallableDemo callableDemo1 = new CallableDemo(0); Future<String> future1 = executorService.submit(callableDemo1); try { System.out.println(future1.get());//返回结果,才会执行下面的代码 CallableDemo callableDemo2 = new CallableDemo(1); Future<String> future2 = executorService.submit(callableDemo2);//等待10s才有数据返回 Thread.sleep(3000); future2.cancel(true);//中断线程运行 CallableDemo callableDemo3 = new CallableDemo(2); Future<String> future3 = executorService.submit(callableDemo3); System.out.println(future3.get());//返回结果,才会执行下面的代码 } catch (InterruptedException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } catch (ExecutionException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } }}
0 0
- concurrent包Callable接口
- Concurrent包学习笔记--Callable
- Concurrent, Callable 和 Future接口比较
- java.util.concurrent包(4)——Callable和Future
- Java.util.concurrent 包 使用Future,Callable实现抢答模式
- Java并发包Concurrent下Callable和Future实战
- java concurrent-Callable FutureTask
- java.util.concurrent.Callable
- java.util.concurrent.Callable
- callable接口
- java.util.concurrent.Callable<V>
- concurrent包
- concurrent包
- Concurrent包
- concurrent包
- concurrent 包
- concurrent包
- concurrent包
- 第十一周上机实践项目——职员有薪水了
- sublime text 3解放鼠标的快捷键总结
- Spring MVC-注解
- Frame框架居中并固定宽度的方法
- Eclipse 快捷键
- concurrent包Callable接口
- 解析XML文档的两类API:DOM 与 SAX的区别
- ios委托
- 多线程例子2
- Eclipse创建自己的快捷输入代码模板
- 构建基于CXF的WebService服务(1)--创建HelloWorld服务
- leetcode第一刷_Set Matrix Zeroes
- AE c# 添加比例尺和指北针
- [论文]基于Kinect的实时人脸识别系统