JAVA 线程 Runable 和 Callable 以及 Future

Runable

线程执行无返回值

class TaskWithResult implements Runable

Callable

线程执行有返回值   

class TaskWithResult implements Callable<T>


Future(未来的意思)

Future.get() 用来获取线程的结果

Future对象本身可以看作是一个显式的引用,一个对异步处理结果的引用

当线程还没有执行结束、得不到返回结果时、Future.get()将会阻塞(block)

(当另外一个线程需要使用某一个线程的结果时,可以通过Future引用的get()方法去获得,如果结果还未出来,调用此方法的线程被block,直到结果出来)

如果无法一直等待下去、可以设置超时时间 Future.get(long timeout, TimeUnit unit)


结合线程池使用

executorService.execute(Runable run); // 没有返回结果 

executorService.submit(Runable run); // 返回future.get() 永远返回null  表示成功 

executorService.submit(Callable run); // 有返回结果 future.get() 、有异常抛异常



纯属个人理解   

不理解或者是有什么错误的地方、欢迎留言并会及时回复和改正的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一.线程安全性 线程安全是建立在对于对象状态访问操作进行管理,特别是对共享的与可变的状态的访问 解释下上面的话: ...
    黄大大吃不胖阅读 938评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,433评论 19 139
  • 接着上节 condition_varible ,本节主要介绍future的内容,练习代码地址。本文参考http:/...
    jorion阅读 15,021评论 1 5
  • 个人笔记,方便自己查阅使用 Contents Java LangAssignment, ReferenceData...
    freenik阅读 1,511评论 0 6
  • 静静的躺着 屏蔽掉手机的滴滴声 忘记困扰多日的愁烦 忽略掉东风的凛冽冬日的寒凉 寻一缕此刻的宁静与心安 城市的喧嚣...
    Skr啊阅读 499评论 0 2

友情链接更多精彩内容