我正在编写一个多线程 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;
  }
}