1

我正在做一项研究,我想将用户线程作为守护线程,Thread.setDaemon(true) 使线程守护进程,但我们知道守护线程适合做后台工作,所以我想链接我的这个线程到任何后台守护线程,以便我的守护线程可以为该线程提供一些服务,并且它应该在该守护线程结束时结束,虽然我已经创建了守护线程,但请告知我将如何通过我的守护线程提供服务任何现有的守护线程,然后它应该最终结束,请告知。

     Thread daemonThread = new Thread(new Runnable(){
            @Override
           public void run(){
               try{
               while(true){
                   System.out.println("Daemon thread is running");
               }

               }catch(Exception e){

               }finally{
                   System.out.println("Daemon Thread exiting"); //never called
               }
           }
       }, "Daemon-Thread");

       daemonThread.setDaemon(true); //making this thread daemon
       daemonThread.start();


}
4

1 回答 1

2

我不知道你的意思,但我会改变

while(true){

while(!Thread.currentThread.isInterrupted()){

这将允许您的线程在中断时停止。

我还会考虑使用 ExecutorService,因为这样可以更轻松地将工作传递给另一个线程并在完成后将其关闭。

ExecutorService service = Executors.newSingleThreadExecutor(new ThreadFactory() {
    @Override
    public Thread newThread(Runnable r) {
        Thread t = new Thread(r, "worker");
        t.setDaemon(true);
        return t;
    }
});

service.submit(new Runnable() { /* task for this thread to perform */ });

service.shutdown(); // to stop it.
于 2012-05-06T06:35:50.060 回答