我正在尝试构造两个线程,线程A是主线程,线程B是第二个线程,线程B正在通过一个耗时的函数更新一个变量(这个变量应该在两个线程之间共享,因为最终线程A需要使用该变量也是如此),但是如果线程 B 完成时间过长(使用异常),我希望线程 A 终止线程 B。
我尝试的是以下内容:
Thread thread = new Thread() {
public void run() {
/// run something that could take a long time
}
};
synchronized (thread) {
thread.start();
}
System.err.println("Waiting for thread and terminating it if it did not stop.");
try {
thread.wait(10000);
} catch (InterruptedException e) {
System.err.println("interrupted.");
}
如果行为运行超过 10 秒,是否应该给出终止行为的预期行为?线程对象在等待后被删除,因为运行线程的方法返回。
现在,这段代码发生的事情是我总是在 wait(10000) 命令上得到 java.lang.IllegalMonitorStateException。