2008年9月7日日曜日

javaのinitializer

その場で作ってすぐ実行するスレッドをThreadを継承した匿名クラスで実装する。このスレッドをdaemon化するのに、次のようなやり方ではIllegalThreadStateExceptionが発生してしまう。startしたらdaemon化出来ないため。

new Thread() {
    @Override
    public void run() {
        setDaemon(true);
        System.out.println("hello");
    }
}.start();

まあ変数に一度入れてsetDaemonしてやればいいのだが、それでは負けた気がするのでちょっと考えたら、initializer使えばいいのに気付いた。

new Thread() {
    {
        setDaemon(true);
    }
    @Override
    public void run() {
        System.out.println("hello");
    }
}.start();



0 件のコメント:

コメントを投稿