Недавно я видел вопрос с кодом следующим образом:
Кода -копия выглядит следующим образом:
public static void main (String args []) {
Поток t = new Thread () {
public void run () {
pong ();
}
};
t.run ();
System.out.println ("ping");
}
static void pong () {
System.out.println ("pong");
}
Вопрос, какой результат будет выходить?
Я запускал его много раз, и это оказалось Pong Ping. Позже я наконец обнаружил ключевую точку, объект потока T, который вызывает не метод начала (), а метод run (). Позже я открыл отладку в режиме перерыва и обнаружил, что когда я позвонил в метод run (), во всей программе был только один поток. Только тогда мы можем конкурировать с основным потоком для ЦП, и может быть несколько результатов, но, поскольку следующий метод вывода выполняется быстро, это в основном вывод «Ping Pong».
Таким образом, разница между run () и start () составляет:
run () - это метод, определенный в запускаемом интерфейсе, который должен позволить клиентским программистам записывать свой собственный функциональный код в этом методе. Нет никакой разницы между вызовом напрямую и вызовом ваших собственных методов участников обычными классами.
start () - это флаг, который начинает запускать поток.
Поэтому я думаю, что если вы хотите написать отдельный поток, лучше всего наследовать поток. Полем