周末去考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
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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货