线程join

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

窗外有个蓝蓝天

2015-04-05 15:21

老师您好,我去掉了舞台中军队停止等待程咬金join的方法,运行以后发现只有主线程停止执行,其它的子线程会继续执行,是不是join方法只会阻塞主线程的执行而不会影响其它子线程的执行呢?

写回答 关注

2回答

  • 源代码_思无邪
    2015-08-02 09:17:34
    已采纳

    你的理解很对:当某个线程使用join()方法加入到另一个线程时,另一个线程会等待该线程执行完毕后再继续执行。

    程咬金线程通过join()方法加入到舞台线程,所以只有舞台线程会等待。隋军和农民军线程的结束,是在舞台线程中加入armyTaskOfSuiDynasty.keepRunning = false;  armyTaskOfRevolt.keepRunning = false;然后舞台线程又sleep(2000),让隋军和农民军线程结束最后一轮(while()循环),让程咬金线程独自执行。

    窗外有个蓝蓝...

    非常感谢!

    2015-08-05 15:46:09

    共 1 条回复 >

  • Arthur
    2015-04-08 06:50:00

    这样分清当前线程。当前军队线程正在执行,在舞台里面通过军队线程上调用join就是讲舞台阻塞,等待军队完成。

    一下是Oracle的文档说明,你可以体会一下。

    Joins

    The join method allows one thread to wait for the completion of another. If t is a Thread object whose thread is currently executing,

    t.join();

    causes the current thread to pause execution until t's thread terminates. 


    hongch...

    老师,关于这方面 我也有问题 你看我说的执行的整个过程对不对 首先舞台线程是主线程,军队线程和关键人物线程是子线程 Stage执行→军队线程执行(1、此过程是不是可以理解为Stage线程在等待Army线程结束?)→Stage遇到keep=false,Army线程结束→关键人物线程执行(2、此过程中,Army线程已经结束,Stage线程等待KeyPerson线程结束)→Keyperson线程结束→主线程结束

    2015-12-24 10:39:33

    共 1 条回复 >

深入浅出Java多线程

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

186088 学习 · 464 问题

查看课程

相似问题