Thread.join()详解
http://www.open-open.com/lib/view/open1371741636171.html
线程A的第N行中调用线程B的join(),可以理解为将线程B的代码插入到线程A的代码中了,产生的结果就是线程A需要等到线程B执行完毕了,才能继续执行线程A的第N+1行。
Thread.sleep常见隐患
/**常见的写法*/
public void run() {
try{
Thread.sleep(1000);
} catch (InterruptedException ie){
ie.printStackTrace();
}
}
/**常见的写法存在的隐患:
如果这个线程在执行sleep之前就被interrupt了,上述代码就会抛出异常。
比如ThreadPoolExecutor框架就是通过对所有的Thread进行interrupt来取消所有线程,这时候我们上述代码就会抛出异常。
*/
/**完善后的代码*/
public void run() {
while (!Thread.currentThread().isInterrupted()) {
try{
Thread.sleep(1000);
} catch (InterruptedException ie){
ie.printStackTrace();
}
}
}
本文详细解析了Thread.join()方法的工作原理及其应用场景,同时深入探讨了Thread.sleep()方法在实际使用过程中可能遇到的问题及解决方案。
9262

被折叠的 条评论
为什么被折叠?



