【发布时间】:2020-10-04 15:37:33
【问题描述】:
所以我正在制作一个 java 代码测试 Web 应用程序,并且我在单独的线程中运行每个代码执行。问题是有时测试有时间限制,或者学生只是编写了一个无限的 while 循环。我试图用“最佳实践”(例如使用中断)来终止我的测试线程,但我无法控制编译函数的内部工作,所以我不能只告诉线程查看它是否被中断。我想就如何更好地处理这种情况提出建议。 这是我想要实现的基本示例:
public class Main {
public static void main(String[] args) {
CodeExecutionThread cex = new CodeExecutionThread();
cex.start();
try {
cex.join(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Thread should stop at this point.");
}
}
class CodeExecutionThread extends Thread {
public CodeExecutionThread() {
}
@Override
public void run() {
infinite_operation();
}
public void infinite_operation() {
while(true) {
System.out.println("thread active");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
【问题讨论】:
-
操作无限是有原因的吗?通常你会想要内置功能来让你停止线程。
-
您不能真正强制线程停止。您可以通过打断它来“请它”停止。被中断的线程需要处理中断。
-
"while(true)" 你想知道为什么会有无限循环吗?
-
@Stultuske OP 说它是一个测试应用程序,它执行的代码由其他人提交,可能是无限操作。 OP 知道
while(true)导致无限循环
标签: java multithreading