[高并发Java 二] 多线程基础(19)

http://www.smzswang.com时间:2016-11-27 20:02来源:互联网

  那么join是怎么实现的呢?

  join的本质

  while(isAlive()) { wait(0); }

  join()方法也可以传递一个时间,意为有限期地等待,超过了这个时间就自动唤醒。

  这样就有一个问题,谁来notify这个线程呢,在thread类中没有地方调用了notify?

  在javadoc中,找到了相关解释。当一个线程运行完成终止后,将会调用notifyAll方法去唤醒等待在当前线程实例上的所有线程,这个操作是jvm自己完成的。

  所以javadoc中还给了我们一个建议,不要使用wait和notify/notifyall在线程实例上。因为jvm会自己调用,有可能与你调用期望的结果不同。

【免责声明】本文仅代表作者个人观点,与中国数码招商网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。您若对该稿件内容有任何疑问或质疑,请联系本网将迅速给您回应并做处理。