博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Callable和Future
阅读量:5019 次
发布时间:2019-06-12

本文共 1423 字,大约阅读时间需要 4 分钟。

Callable和Runnable很类似,主要区别在于Callable能返回运行结果,能抛出异常。
执行Callable方式,需要Future的实现类的支持,用于接收运算结果。FutureTask是Future接口的实现类。
public class TestCallable {     public static void main(String[] args) {        ThreadDemo td = new ThreadDemo();         //1.执行 Callable 方式,需要 FutureTask 实现类的支持,用于接收运算结果。        //参数里面放一个Callable的对象        FutureTask
result = new FutureTask<>(td); new Thread(result).start(); //2.接收线程运算后的结果 try { Integer sum = result.get(); //FutureTask 可用于 闭锁 类似于CountDownLatch的作用,在所有的线程没有执行完成之后这里是不会执行的 System.out.println(sum); System.out.println("------------------------------------"); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } } } class ThreadDemo implements Callable
{ @Override public Integer call() throws Exception { int sum = 0; for (int i = 0; i <= 100000; i++) { sum += i; } return sum; } }

  

综上例子可以看到: Callable 和 Future接口的区别

    1.   (1)Callable规定的方法是call(),而Runnable规定的方法是run(). 
    2.   (2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值的。  
    3.   (3)call()方法可抛出异常,而run()方法是不能抛出异常的。 
    4.   (4)运行Callable任务可拿到一个Future对象, Future表示异步计算的结果。 
    5.   它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。 
    6.   通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果。 
    7. Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。
    1. 来源: 

转载于:https://www.cnblogs.com/wzdnwyyu/p/11162973.html

你可能感兴趣的文章
.NETFramework:template
查看>>
HM16.0之帧内模式——xCheckRDCostIntra()函数
查看>>
Jmeter性能测试 入门
查看>>
安卓动画有哪几种?他们的区别?
查看>>
Nodejs学习总结 -Express入门(一)
查看>>
web前端优化
查看>>
ssh 连接原理及ssh-keygen
查看>>
vs2013编译qt程序后中文出现乱码
查看>>
【转】IOS数据库操作SQLite3使用详解
查看>>
Android官方技术文档翻译——ApplicationId 与 PackageName
查看>>
设计网站大全
查看>>
JVM CUP占用率过高排除方法,windows环境
查看>>
【转】JAVA字符串格式化-String.format()的使用
查看>>
【转】ButterKnife基本使用--不错
查看>>
【转】VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”...
查看>>
函数中关于const关键字使用的注意事项
查看>>
微信架构(转)
查看>>
Web项目中的路径问题
查看>>
js随机数的取整
查看>>
关于解析漏洞
查看>>