关于java中Thread(线程)类的join方法,之前一直没怎么使用,也不太理解,今天重新看了下,感觉理解了其真实的含义,在此记录分享下,good luck~~
下面第一个截图,我在Thread t 线程中,sleep了500毫秒,并在主线程中调用了t.join(0) 【说明:join(0)和join方法一样,表示无限等待】方法,然后我们可以在最后的打印输出中看到,从主线程开始执行到结束,一共花费了502毫秒。
再看下面的截图:
我把t.join(0);这行代码注释掉了,然后再看最后的打印输出,从主线程开始到结束,仅仅耗时1 毫秒,而“woker thread”则在后面输出,由此可以看出,主线程并没有等待Thread t线程结束,而是继续执行。
由此我们可以理解Thread.join()方法的含义,其实就是表示线程之间的等待,调用者等待被调用者线程结束后再执行。