我期待输出是:
testing
DONE! 6
但实际上是
DONE! 5
join() 不等待线程完成吗?
Thread[] T = new Thread[3];
int n = 5;
for(i = 0; i < 3; i++)
T[i] = new Thread();
Thread x = new Thread();
T[1].start{
sleep(500);
log.info "testing";
}
x.start{
n++;
}
x.join();
T[1].join();
log.info "DONE! " + n;
简短的答案是您没有启动线程(T[1]
&x
)。
当您说T[1].start{..
这并不意味着您正在启动T[1}
线程时,您只是在创建和启动匿名线程。
解决方案:
T[1] = T[1].start{
sleep(500);
log.info "testing";
}
工作代码:
Thread[] T = new Thread[3];
int n = 5;
for(i = 0; i < 3; i++)
T[i] = new Thread();
Thread x = new Thread();
T[1] = T[1].start{
sleep(500);
println "testing";
}
x= x.start{
n++;
}
x.join();
T[1].join();
println "DONE! " + n;
查看文档以获取详细信息:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句