thread.join() 方法存在的必要性是什么?
好久远的问题,为什么关注这个问题的人这么少?
或许是用到这个功能的情形比较少吧。
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
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
最新文章
- Activity的Launch Mode
- .NET/ASP.NET 4.5 Bundle组件(捆绑、缩小静态文件)
- sqlserver 通用分页存储过程
- 餐厅系统app版
- Qt——鼠标拖动调整窗口大小
- AS3之正则表达式讲解
- python 几种常见的测试框架
- spring mvc页面显示图片失败
- 使用JDT.AST解析java源码
- Linux入门篇(四)——Vim的使用与Bash
- ( 转 ) 聊一聊C#的Equals()和GetHashCode()方法
- 23 服务的启动Demo2
- 利用Burp Suite攻击Web应用
- openwrt 域名ping不通 修改dns
- filter的基本介绍和使用
- CF375D Tree and Queries(dsu on tree)
- 【AT1219】历史研究
- Javascript 将 HTML 页面生成 PDF 并下载
- Excel 数据读入到DataSet
- 谈 JavaScript 中的强制类型转换 (2. 应用篇)
热门文章
- 本地添加maven支持
- 在16aspx.com上下了一个.net程序,怎么修改它的默认登录名和密码?
- react 使用antd的TreeSelect树选择组件实现多个树选择循环
- HDU 1698.Just a Hook-线段树(成段替换、输出总和tree[1])
- Codeforces Round #445 C. Petya and Catacombs【思维/题意】
- 树链剖分【p3038】[USACO11DEC]牧草种植Grass Planting
- Dfs+Spfa【p1606】[USACO07FEB]荷叶塘Lilypad Pond
- HNOI2004 郁闷的出纳员(Splay)
- luogu P1075 质因数分解
- hdu 4826 Labyrinth DP