好久远的问题,为什么关注这个问题的人这么少?

或许是用到这个功能的情形比较少吧。

1、等待处理结果

为什么要用join()方法在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到join()方法了。当只有一个主线程和一个子线程的情况这个说法似乎站不住脚,那就往↓↓看

2、未捕获的异常

java多线程程序中所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉。但是无法避免的是unchecked exception,也就是RuntimeException,当抛出异常时子线程会结束,但不会影响主线程。难免会有没有处理到的异常情况,如果放到一个方法(函数)中执行,一旦出现则会导致主线程崩溃,而放到子线程中去执行则不会受到影响。

3、等待指定时间

t.join(1000);  //等待 t 线程,等待时间是1000毫秒

1、等待处理结果

为什么要用join()方法
在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到join()方法了。

当只有一个主线程和一个子线程的情况这个说法似乎站不住脚,那就往↓↓看

2、未捕获的异常

java多线程程序中所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉。但是无法避免的是unchecked exception,也就是RuntimeException,当抛出异常时子线程会结束,但不会影响主线程。

难免会有没有处理到的异常情况,如果放到一个方法(函数)中执行,一旦出现则会导致主线程崩溃,而放到子线程中去执行则不会受到影响。

3、等待指定时间

t.join(1000);  //等待 t 线程,等待时间是1000毫秒

作者:微wx笑
链接:https://www.zhihu.com/question/27485990/answer/243189342
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最新文章

  1. Activity的Launch Mode
  2. .NET/ASP.NET 4.5 Bundle组件(捆绑、缩小静态文件)
  3. sqlserver 通用分页存储过程
  4. 餐厅系统app版
  5. Qt——鼠标拖动调整窗口大小
  6. AS3之正则表达式讲解
  7. python 几种常见的测试框架
  8. spring mvc页面显示图片失败
  9. 使用JDT.AST解析java源码
  10. Linux入门篇(四)——Vim的使用与Bash
  11. ( 转 ) 聊一聊C#的Equals()和GetHashCode()方法
  12. 23 服务的启动Demo2
  13. 利用Burp Suite攻击Web应用
  14. openwrt 域名ping不通 修改dns
  15. filter的基本介绍和使用
  16. CF375D Tree and Queries(dsu on tree)
  17. 【AT1219】历史研究
  18. Javascript 将 HTML 页面生成 PDF 并下载
  19. Excel 数据读入到DataSet
  20. 谈 JavaScript 中的强制类型转换 (2. 应用篇)

热门文章

  1. 本地添加maven支持
  2. 在16aspx.com上下了一个.net程序,怎么修改它的默认登录名和密码?
  3. react 使用antd的TreeSelect树选择组件实现多个树选择循环
  4. HDU 1698.Just a Hook-线段树(成段替换、输出总和tree[1])
  5. Codeforces Round #445 C. Petya and Catacombs【思维/题意】
  6. 树链剖分【p3038】[USACO11DEC]牧草种植Grass Planting
  7. Dfs+Spfa【p1606】[USACO07FEB]荷叶塘Lilypad Pond
  8. HNOI2004 郁闷的出纳员(Splay)
  9. luogu P1075 质因数分解
  10. hdu 4826 Labyrinth DP