public class HelloRunnable implements Runnable {
public void run() {
System.out.println("Hello from a thread!");
}
public static void main(String args[]) {
(new Thread(new HelloRunnable())).start();
} }
Согласно Java DocКакой метод вызывает run()?
Runnable
Интерфейс определяет один метод,run
, означало, чтобы содержать код выполняется в потоке. Объект Runnable передается конструктору Thread.
Итак, Когда мы запускаем HelloRunnable, кто вызывает метод внутреннего запуска? В Thread
классе, метод start
выглядит следующим образом:
public synchronized void start() {
if (threadStatus != 0)
throw new IllegalThreadStateException();
group.add(this);
start0();
if (stopBeforeStart) {
stop0(throwableFromStop);
}
}
Из этого кода, мы можем видеть, что метод запуска не вызывая метод run()
.
Как насчет метода 'start0', он вызывает метод' run'? Я имею в виду, что нет волшебства, верно? Если вы вызываете 'run', кто-то должен его называть :-) – dasblinkenlight
что такое * threadstatus *? stopBeforeStart? –
@dasblinkenlight start0() выглядит так: inline 'private native void Больше ... start0();' –