我正在尝试使用Thread.join(millis)超时正在运行的Thread,但它只是挂起并且不会超时。可能是什么原因造成的?示例代码
public static void main(String[] args) throws InterruptedException {
final Thread t1 = new Thread(() -> {
for (int i = 0; i < 100000000000000000L; i++) {
}
});
t1.start();
t1.join(100);
System.out.println("t1.join called");
}
答案 0 :(得分:1)
线程连接(毫秒)没有在Java中杀死线程
这并不意味着杀死线程。它意味着等待它退出到超时值,然后在超时到期时将InterruptedException
抛给当前线程。见Javadoc。