在以下文档中
start正确声明:
Java虚拟机调用
run此线程的方法
因此,正是
start0JVM中的本机代码负责调用
run新创建的线程。(这并不是很意外,因为启动线程是非常特定于 *** 作系统的,并且不能用纯Java实现。)
注意 :
start0不
run直接呼叫。而是(在高级视图中,忽略JVM内部管理),它指示 *** 作系统创建一个新线程并让该线程执行
run。
为了澄清起见,以下是有关方法的简短说明:
start
是启动new的高级功能Thread
。start0
是从 *** 作系统创建新线程并负责确保run
被调用的本机方法。run
是您的Runnable
类中定义的方法。此方法将在新线程中执行。一个Thread
在Java本身对象有没有关于用户代码应该执行的想法。这是关联Runnable
对象的责任。
因此,当您调用时
Thread.start(),将自动调用的
run方法
Runnable。
当然,您总是可以显式调用
run方法
Runnable:
HelloRunnable hr = new HelloRunnable();hr.run();
但是,这当然 不会 在单独的线程中执行,而是会阻止执行。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)