-1

以下のコードがあります..

import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;

public class daemonTest {

    public static void main(String... a) throws Exception {
        ExecutorService service = Executors
                .newSingleThreadExecutor(new ThreadFactory() { // anonmyous class start
                    public Thread newThread(Runnable r) {
                        Thread two = new Thread(r, "two");
                        two.setDaemon(true);
                        System.out.println("two --->" + two.isDaemon());
                        return two;
                    }
                });
        for (int i = 0; i < 10; i++)
            service.submit(new Runnable() {
                @Override
                public void run() {
                    System.out.println("[" + Thread.currentThread().getName()
                            + "] - Hello World.");
                    Thread.yield();
                }
            });
        service.shutdown();
    }
}

結果の出力は...

two --->true
[two] - Hello World.
[two] - Hello World.
[two] - Hello World.
[two] - Hello World.
[two] - Hello World.
[two] - Hello World.
[two] - Hello World.
[two] - Hello World.
[two] - Hello World.
[two] - Hello World.

上記のコードが何をしているのか教えてください..私が達成したいのは、1つのスレッドをデーモンとして設定することであり、そのデーモンスレッドは非デーモンスレッドにサービスを提供します!!

4

1 に答える 1

0

上記のコードが何をしているのか教えてください..

コードは次のとおりです。

        service.submit(new Runnable() {
            @Override
            public void run() {
                System.out.println("[" + Thread.currentThread().getName()
                        + "] - Hello World.");
                Thread.yield();
            }
        });

あなたは 10 件のジョブを送信していprintlnますyield()。彼らはスレッドを待っていません。それが必要な場合two.join()は、ランナブルのどこかに必要です。

于 2012-07-26T16:18:12.373 に答える