为什么java.lang.Thread类没有一个只接受ThreadGroup的构造函数?

时间:2015-08-23 13:13:46

标签: java multithreading constructor

java.lang.Thread类有一个构造函数,它只接受一个字符串参数作为线程名称。它有一个构造函数,它只接受一个Runnable目标。但它也有一个默认的构造函数。这意味着名称或Runnable目标不是必需的。

但是,在使用ThreadGroup创建Thread时,这有点不同。没有构造函数只接受一个ThreadGroup。至少名称或Runnable目标与ThreadGroup一起进入。

java.lang.Thread类是否有任何理由没有只接受ThreadGroup的构造函数?

1 个答案:

答案 0 :(得分:1)

如果您需要创建仅包含Thread参数的ThreadGroup,则可以将Thread(ThreadGroup, Runnable)构造函数与null Runnable一起使用,这将具有相同的效果。即,

t = new Thread(threadGroup, (Runnable)null);

(必须使用强制转换来消除它与Thread(ThreadGroup, String)构造函数的歧义。)

没有绝对的理由说明Thread无法让构造函数只占用ThreadGroup,但已经有 8个构造函数。它们中的每一个都是测试和文档的复杂性和负担,并试图找出您正在调用的那个。第九个建设者很难证明其存在的合理性。实际上,考虑到很少使用ThreadGroup,如果重载次数减少而不是更多,那就没有损失。