线程调度程序注册?

时间:2011-08-22 06:53:12

标签: java multithreading

在java中,run()是否在线程调度程序中注册了一个线程?

construct()start()register()怎么样?

2 个答案:

答案 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()是什么意思?