java.lang.Thread类有一个构造函数,它只接受一个字符串参数作为线程名称。它有一个构造函数,它只接受一个Runnable目标。但它也有一个默认的构造函数。这意味着名称或Runnable目标不是必需的。
但是,在使用ThreadGroup创建Thread时,这有点不同。没有构造函数只接受一个ThreadGroup。至少名称或Runnable目标与ThreadGroup一起进入。
java.lang.Thread类是否有任何理由没有只接受ThreadGroup的构造函数?
答案 0 :(得分:1)
如果您需要创建仅包含Thread
参数的ThreadGroup
,则可以将Thread(ThreadGroup, Runnable)
构造函数与null Runnable
一起使用,这将具有相同的效果。即,
t = new Thread(threadGroup, (Runnable)null);
(必须使用强制转换来消除它与Thread(ThreadGroup, String)
构造函数的歧义。)
没有绝对的理由说明Thread
无法让构造函数只占用ThreadGroup
,但已经有 8个构造函数。它们中的每一个都是测试和文档的复杂性和负担,并试图找出您正在调用的那个。第九个建设者很难证明其存在的合理性。实际上,考虑到很少使用ThreadGroup
,如果重载次数减少而不是更多,那就没有损失。