2016-07-28 5 views
0

私は単純なスレッドテストコードスニペット、この疑似コードはnew Thread(new Runnable(){...implement run method....}){...override run method...}.start();のようなものです。私の問題は、なぜこのコードの出力は 'スレッド:スレッド..'ではなく、 '実行可能ファイル:スレッド'ですか?ここに完全なコード、ありがとう!デフォルトではなぜこのコード出力は 'thread:Thread ..'で、 'runnable:Thread ..'ではないのですか?

public class ThreadTest { 


public static void main(String[] args) { 
    new Thread(new Runnable(){//1 annonymous class implement Runnable interface 
     @Override 
     public void run() { 
      try { 
       Thread.sleep(1000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      System.out.println("runnable:" + Thread.currentThread().getName()); 
     } 
    }){ 
     public void run() {//2 annonymous class extends Thread class 
      try { 
       Thread.sleep(1000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      System.out.println("thread:" + Thread.currentThread().getName()); 
     }; 
    }.start(); 
} 

}

答えて

1

Threadrun方法を使用すると、コンストラクタで供給Runnableに委譲します。

ただし、Threadの(匿名)サブクラスのrunメソッドをオーバーライドして別の処理を行います。

関連する問題