zoukankan      html  css  js  c++  java
  • 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
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    苏州是新的一线城市拦路虎?
    SAP MM ME57界面看到的供应源跟Source List主数据不一致?
    SAP QM 检验批里样品数量的确定
    SAP QM 检验批里某检验特性的取样数量跟检验计划设置不符?
    SAP QM 主检验特性主数据关键字段解释
    SAP S4HANA TR传输之操作
    SAP QA32试图做UD,系统报错-工厂 BTYC中的 QM 基选设置需要维护
    使用 boost.asio 简单实现 异步Socket 通信
    fedora 28/29 配置 C++ 环境
    gitlab 和 github 配置 SSH Keys
  • 原文地址:https://www.cnblogs.com/shamo89/p/9158553.html
Copyright © 2011-2022 走看看