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

但这在创建带有ThreadGroup的线程时有些不同。没有构造函数仅接受ThreadGroup。至少名称或Runnable目标随ThreadGroup一起进入。

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

最佳答案

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

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


(强制转换必须将其与Thread(ThreadGroup, String)构造函数区分开。)

没有绝对的理由为什么Thread不能只有一个ThreadGroup的构造函数,但是已经有八个构造函数。它们每个都是测试和文档的复杂性和负担,并试图弄清楚您要调用哪个。第九个构造函数将努力证明其存在的合理性。实际上,考虑到ThreadGroup的使用很少,如果重载较少而不是更多,则不会有任何损失。

10-06 16:08