周末去考OCJP,看到这道题目,不能不骂BT,但我确实没搞懂请高手帮忙分析一下,先谢过!我有两个疑问:
1) Thread.currentThread.join()跟t.join()不是一回事么?为什么前者根本就运行不完,后都可以。
2) i=6时,怎么运行?难道t.join()还支持嵌套?
package com.ocjp.testThread;public class NestedThread extends Thread {
 static int count = 0;
 public void run() {
 for(int i = 0; i < 100; i++) {
 if(i == 5 && count < 3) {
 Thread t = new NestedThread(names[count++]);
//  run()方法里启线程,这世界太疯狂!
 t.start();
//  t调用join()阻塞了其它线程,自己先运行结束; i=6时怎么运行?
 try { t.join(); } catch(Exception e) { }
//  下面的写法,将进入infinite loop....还没搞懂下面的写法跟t.join()不一样么?
//  try { Thread.currentThread().join(); } catch(Exception e) { }
 }
 System.out.println(Thread.currentThread().getName() + " ");
 }
 }
 public static void main(String[] args) {
 new NestedThread("t0").start();
 }  NestedThread(String s) { super(s); }
 String[] names = {"t1", "t2", "t3"};
}
多线程ocjp