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 に答える