2015-11-10 2 views
-2

Struture 1:чем разница между этими двумя структурами создания потоков, указанных ниже

public class Runner { 
    public static void main(String[] args) { 
     Thread t1 = new Thread(new Thread(){ 
      public void run() { 
       System.out.println("value :"); 
      } 
     }); 
     t1.start(); 
    } 
} 

Структура 2:

public class Runner { 
    public static void main(String[] args) { 
     Thread t1 = new Thread(){ 
      public void run(){ 
       System.out.println("value :"); 
      } 
     }; 
     t1.start(); 
    } 
} 

Результат в обоих случаях такое же.

В чем разница между двумя вышеупомянутыми структурами? Пожалуйста, объясни.

+0

Пожалуйста, используйте помощь, чтобы узнать, как включить код в SO статей. – Gene

ответ

0

Выполняется с использованием внутреннего класса в первом примере. Поэтому в первом примере вы передаете объект одного потока в другой поток.

Старт() метод всегда ищет способ запуска. И t1.start() работает там поток в обоих примерах.

0

В первом примере вы предоставите Thread с потоком в конструкторе. Его странно, и он работает, потому что Thread реализует Runnable, но использование его как это не рекомендуется. Просто используйте Runnable в конструкторе

По умолчанию метод Thread's run() запускает Runnable, заданный конструктору. Если вы не предоставляете Runnable и не переопределяете метод запуска Thread, тогда он не будет вообще выполнять код.

декомпилированный метод запуска моего класса Thread выглядит следующим образом:

public void run() { 
    if(this.target != null) { 
     this.target.run(); 
    } 
} 
Смежные вопросы