为什么';t java.lang.Thread类是否有一个构造函数,该构造函数只接受线程组?
Thread类有一个构造函数,它只接受一个字符串参数作为线程名。它有一个只接受可运行目标的构造函数。但它也有一个默认构造函数。这意味着名称或可运行目标不是必需的 但是,在使用线程组创建线程时,这有点不同。没有只接受线程组的构造函数。至少名称或可运行目标与ThreadGroup匹配为什么';t java.lang.Thread类是否有一个构造函数,该构造函数只接受线程组?,java,multithreading,constructor,Java,Multithreading,Constructor,Thread类有一个构造函数,它只接受一个字符串参数作为线程名。它有一个只接受可运行目标的构造函数。但它也有一个默认构造函数。这意味着名称或可运行目标不是必需的 但是,在使用线程组创建线程时,这有点不同。没有只接受线程组的构造函数。至少名称或可运行目标与ThreadGroup匹配 java.lang.Thread类没有只接受ThreadGroup的构造函数有什么原因吗?如果需要只使用ThreadGroup参数创建Thread,可以将构造函数与nullRunnable一起使用,这将具有相同的效果。
java.lang.Thread类没有只接受ThreadGroup的构造函数有什么原因吗?如果需要只使用
ThreadGroup
参数创建Thread
,可以将构造函数与nullRunnable
一起使用,这将具有相同的效果。即
t = new Thread(threadGroup, (Runnable)null);
(强制转换对于从线程(ThreadGroup,String)
构造函数中消除歧义是必需的。)
没有绝对的理由说明
Thread
不能让构造函数只接受ThreadGroup
,但是已经有八个构造函数了。它们中的每一个都是测试和文档编制的复杂性和负担,并试图找出您调用的是哪一个。第九个构造器将努力证明它的存在。事实上,考虑到ThreadGroup
s很少被使用,如果重载更少,而不是更多,那就不会有什么损失。我认为在创建线程组后,您不能将线程添加到线程组中。创建线程时必须给出线程组。如果不是作者,很难回答“作者为什么决定不做…”这样的问题。但在任何情况下,使用其他构造函数之一都很容易做到这一点:new Thread(myThreadGroup,(Runnable)null)
。在过去,对线程进行子分类比现在更为普遍。