关于守护进程线程

时间:2012-05-06 06:23:58

标签: java multithreading

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

     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();


}

1 个答案:

答案 0 :(得分: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.