这道多线程的题目我搞不懂。。。求助
周末去考OCJP,看到这道题目,不能不骂BT,但我确实没搞懂。。。请高手帮忙分析一下,先谢过!我有两个疑问:
1) Thread.currentThread.join()跟t.join()不是一回事么?为什么前者根本就运行不完,后都可以。
2) i=6时,怎么运行?难道t.join()还支持嵌套?
package com.ocjp.testThread;多线程 ocjp --------------------编程问答-------------------- Thread.currentThread().join()。。是绝对不可以的。。。这永远是自己合并自己。。。,我水平太差,对此不敏感 --------------------编程问答-------------------- 发现LZ的几个问题都挺有意思的,学习学习啦~
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"};
}
补充:Java , Java SE