0

我有一个要求,我想创建一个由 5 个线程组成的池,现在我想将这 5 个线程中的 1 个线程作为一个daemon线程,当那个特定的 1 个线程成为守护线程时,我想给它分配一些任务与任何服务相关的守护线程,这样当 java 程序退出时,我可以在窗口任务管理器中检查特定的守护线程仍在执行该任务。请告知如何实现这一点..!因为我坚持这个..!

下面是我的代码...

public class StoppingThread extends Thread //extend thread class 
{
    // public  synchronized void run()
     //synchronized (this)

    private volatile boolean Completed = false;


    public void setCompleted() {
        Completed = true;
    }


    public void run()
    {
      for(int i=0;i<20 && !Completed;++i) {
          System.out.println(Thread.currentThread().getName());
        try {
          Thread.sleep(500);

          System.out.print(i +"\n"+ "..");
        } catch(Exception e) {
          e.printStackTrace();
        }
      } 
    } 

 public static void main(String... a) 
 {
     StoppingThread x = new StoppingThread();
     StoppingThread y = new StoppingThread();
     x.start();
     x.setName("first");
     x.setCompleted(); // Will complete as soon as the latest iteration finishes means bolean variable value is set to true 
     y.start();
     y.setName("second");

     }  

 }

现在在这个我想让Y线程作为守护线程然后想给它分配一些任务

4

1 回答 1

5

使用ShutDownHook。您注册到钩子中的线程将在应用程序结束时被调用。您可以在此线程运行方法中添加所有清理代码(DB、Stream、Context 等)或任何自定义功能。

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() { // clean up code like closing streams,DB etc }
});
于 2012-07-26T06:50:24.240 回答