在java中,run()
是否在线程调度程序中注册了一个线程?
construct()
,start()
和register()
怎么样?
答案 0 :(得分:3)
在java中,run()是否在线程调度程序中注册一个线程?
没有。如果直接调用run()
方法,则将其称为常规方法;即它在当前线程上运行,而不是在新线程上运行。
如何构造(),start()和register()
start
方法创建一个新线程,并在该过程中将线程注册到调度程序。 (但是,调度程序在Java中是一个模糊的概念。它暗示必须存在,但它的实现和行为通常留给主机操作系统。纯Java程序几乎无法控制线程调度程序实际的方式工作的。)
construct()
API中没有register()
或Thread
方法。如果您指的是Thread
构造函数,它们只会创建一个Thread
对象,而不是创建工作的底层线程。后者仅在调用start()
时创建。
答案 1 :(得分:1)
run()
是线程中的实际代码;所以你可以这样做:
Thread childThread = new Thread() {
public void run() {
// do stuff on a new thread
}
};
(虽然我被告知延长线程,但这很难看;)
因此调用run()本身不会创建新线程。为此,您使用start():
childThread.start();
所以,我猜它确实为调度程序提供了一个新的线程来处理 - 但这在操作系统级别上有所下降。
我不确定construct()
和register()
是什么意思?