问答详情
源自:2-5 Java线程-隋唐演义实战开发---关键先生

join方法使其他线程都停止,也包括主线程吗?

join方法使其他线程都停止,也包括主线程吗?

提问者:qq_杀意隆_0 2018-04-23 16:31

个回答

  • no4990
    2019-07-09 16:00:46

    这篇文章说得很清楚了。

    当前的线程阻塞,等待调用join()的线程执行。当前的线程可以是 “调用了join()的线程之外的任意线程”。

    java中的Thread类的join

    join是Thread的实例方法,官方解释为:等待该线程终止。

    其作用就是将调用join的线程优先执行,当前正在执行的线程阻塞,直到调用join方法的线程执行完毕或者被打断,主要用于线程之间的交互。

    还有两个重载的方法:

    1、join(long millis),等待该线程终止的时间最长为 millis 毫秒。为 0 意味着要一直等下去。

    2、join(long millis, int nanos),等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒



  • daniel_wlh
    2019-04-24 14:51:45

    join不是让所有线程都停止,join只是让主线程停止。

    看下面的代码,如果把thread.sleep注释掉,再运行,有一定概率程咬金打完都谢幕了,军队线程还在执行。

    这说明join只是让主线程停止,而不是让所有线程都停止。这一点老师讲的应该是有误的。

    https://img4.mukewang.com/5cc0073b0001ef5109610768.jpg

  • 吾明志
    2018-06-27 14:12:52

    输出结束语的就是主线程,所以也包括

  • 慕粉2026319708
    2018-04-23 18:01:26

    是的,主线程把CPU控制权交出来给调用join()方法的线程。