Java线程与Pthread

今天在一次采访中有人问我这个问题。

“当我们使用pthread_create()(POSIX

Threads)创建线程时,该线程将自行启动。为什么我们需要显式调用start()Java。为什么在创建实例时Java不启动该线程是什么原因。”

我很空白,面试官时间很短,最终他无法向我解释原因。

回答:

在Java中,不立即启动线程会导致获得更好的API。您可以在线程上设置属性(守护程序,优先级),而不必在构造函数中设置所有属性。

如果线程立即启动,则需要一个构造函数,

public Thread(Runnable target, String name, ThreadGroup threadGroup, int priority, boolean daemon, ContextClassLoader contextClassLoader, long stackSize)

为了允许在线程启动之前设置所有这些参数。线程启动后无法设置daemon属性。

我猜想POSIX API会在对的调用中采用带有所有线程属性的结构pthread_create(),因此立即启动线程是有意义的。

以上是 Java线程与Pthread 的全部内容, 来源链接: utcz.com/qa/414256.html

回到顶部