• 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
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    Java(13)_多线程
    数据去敏
    过滤器(Filter)与拦截器
    Process Automation Accredited Professional Exam Guide Victor
    postgresql 批量删除模式中一些表
    SpringBoot Thymeleaf 模板引擎使用
    使用Qss设置QPushButton图标和显示文本的位置
    【Qt】贴图实现方向控制盘
    【Qt】多级折叠下拉导航菜单
    【Qt】使用QMovie加载Gif动画
  • 原文地址:https://www.cnblogs.com/shamo89/p/9158553.html
Copyright © 2020-2023  润新知