我正在做一项研究,我想让一个用户线程作为守护线程,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();
}
最佳答案
我不太明白你的意思,但我会改变
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.
关于java - 关于守护线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10468629/