我正在编写一个多线程 Java 控制台应用程序,我打算通过 Ctrl-C 杀死它。在这种情况下,如果我有一个封装单个线程的类,在封装类的 finalize 方法中关闭子线程是一种好习惯吗?
如果您 Ctrl-C 原始应用程序并且所有线程未正确关闭,是否可以让原始应用程序的工件保持运行?
伪代码:
public class ParentClass {
Thread childThread = new Thread(new ExampleRunnable());
@Override protected void finalize() throws Throwable {
childThread.shutdown();
}
}
public class ExampleRunnable implements Runnable {
private volatile boolean alive = false;
@Override
public void run() {
alive = true;
while(alive) {
//do some work
}
}
public void shutdown() {
alive = false;
}
}