问题描述: java中如何退出子线程死循环?
我有一个jar包ABC.jar, 内有一个类CLASS有个方法Method,其内容是:
jar包的内容是不可修改的.
void Method() {
while(true) {
...
}
} 在我自己的程序中,我起了一个线程去调用这个方法,然后在主线程中等待这个方法返回,很显然是等不到的.
public class B {
private static Object lock = new Object();
public static void main(String[] args) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Class a = new Class();
a.Method(); // 这里会进入死循环
synchronized(lock) {
lock.notify();
}
}
});
thread.start();
synchronized (lock) {
try {
lock.wait(1000); // 因为子线程不会结束,这里会超时
// thread.interrupt() 无效
// 要如何结束子线程呢?
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
现在是想问要如何结束子线程?
Java
同意楼上的,如果你那JAR包是不能改的,那你就不用想结束那线程了,就算能,该程序的健壮性而可想而知。否则,你就必须改那源码,改成有状态的,相关逻辑上要有检测状态。
还能不能好好的code了,咱专业一点好不?
有人能解决这个问题吗?我不求程度健壮性.