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

来源:2-5 Java线程-隋唐演义实战开发---关键先生

qq_杀意隆_0

2018-04-23 16:31

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

写回答 关注

4回答

  • 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

    精慕门759...

    老师讲的有没问题我不知道,但我知道你的说法有问题:join不是让所有线程都停止,join只是让主线程停止。 你再看看,当程咬金的线程调用join()方法时,是不是再也没出现军队线程的执行过程? join()方法调用后是让其它线程等待当前进程结束,不代表当前进程结束后,其它进程也结束,所以程咬金打完了之后,军队还会打。

    2019-07-17 18:14:44

    共 2 条回复 >

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

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

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

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

深入浅出Java多线程

带你一起深入浅出多线程,掌握基础,展望进阶路线

186088 学习 · 464 问题

查看课程

相似问题