Два способа настройки потоков
Настройте класс реализации запускаемого интерфейса, а затем постройте поток, то есть передайте класс с запущенным интерфейсом в поток.
Новый поток или напишите подкласс потока, чтобы переопределить его метод запуска. (Новая ветка и переопределение метода запуска на самом деле является способом для анонимного внутреннего класса)
Пример кода
public static void main (string [] args) {new Thread (new Runnable () {@OverridePublic void run () {System.out.println («Создать поток путем передачи целевой цели!»);}}). start (); new Thread () {@overpublic void run () {System.out.print.println ("Создать thread warride run run () {system.out.print.print.print !");};}.начинать();}Вышеупомянутые методы для построения потоков 1 и 2 разработаны с анонимными объектами класса из-за метода написания кода. Следующие вспомогательные инструкции теперь сделаны:
1. Для первого абзаца я прямо прошел в анонимном запускаемом экземпляре. Вы можете настроить запускаемый экземпляр, а затем получить поток в форме нового потока (Runnable);
2. Для второго абзаца вы можете специфически определить класс для расширения базового класса потоков, а затем новый класс этого нового потока.
3. Для этих двух сегментов создайте анонимные объекты класса напрямую с новым потоком. Вы можете определить переменную Thread1 и Thread2, а затем использовать Thread1.start () Thread2.start () для запуска потока;
Анализ исходного кода
В чем разница между этими двумя методами? Последний эффект двух одинаково. На уровне исходного кода метод запуска по умолчанию (если он не перезаписан) является методом выполнения, который вызывает цель (цель не пуста). Target - это класс интерфейса, который мы прошли.
Общедоступный синхронизированный void start () {if (ThreadStatus! = 0) Throw New allodalThreadStateException (); Group.Add (this); Boolean start = false; try {start0 (); start = true;} наконец {try {if (! StartSt) {Group.ThreadStartFail (This);Запуск потока в конечном итоге вызовет Native Start0, что приведет к тому, что виртуальная машина JVM вызовет метод запуска потока.
public void run () {if (target! = null) {target.run ();}}Здесь цель - это заполненный объект в потоке
частная забегаемая цель;
Суммировать
Поток переписывания запуска - это метод запуска, выполненный потоком при запуске.
При прохождении выполнения, поток выполняет метод запуска по умолчанию при запуске. Метод запуска будет вызоваться с пройденной целью и вызовет метод запуска цели.
Эффект обоих одинаково, здесь просто для того, чтобы помочь нам увидеть различия в деталях кода.
Выше приведено всесторонний анализ методов начала и запуска в потоках Java, представленных редактором. Я надеюсь, что это будет полезно для всех. Если вы хотите узнать больше, обратите внимание на wulin.com!