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
的使用很少,如果重载较少而不是更多,则不会有任何损失。