Java中Thread.join()的使用方法
本文分三个部分对Thread.join()进行分析:1. join() 的示例和作用2. join() 源码分析3. 对网上其他分析 join() 的文章提出疑问上面代码展示了两个类:Parent,Child。Parent.main()方法是程序的入口,通过Child child = new Child(); 新建child子线程;然后调用child.start();再调用child.join(),此时,Parent父线程会等待child子线程运行完再继续运行。我们来看看在 Java 7 Concurrency Cookbook 中相关的描述:。join,join 是synchronized method,同步的对象是当前线程实例。 join() 和 join 是等价的,表示一直等下去;join(非0)表示等待一段时间。如果 child 线程是 Active,则调用 child.wait(为了防止子线程 spurious wakeup, 需要将 wait(0) 放入while(isAlive())循环中。在调用 join() 方法的程序中,原来的多个线程仍然多个线程,并没有发生“合并为一个单线程”。因为这种词汇歧义比较大,会让读者感到更加困惑或形成错误的理解。
用户评论