Thread的所有构造函数,最终都会去调用一个静态方法init,任何线程都会有一个父线程:
private void init(ThreadGroup g, Runnable target, String name,
long stackSize, AccessControlContext acc) {
if (name == null) {
throw new NullPointerException("name cannot be null");
}
this.name = name.toCharArray();
Thread parent = currentThread();
SecurityManager security = System.getSecurityManager();
currentThread() 代表的是创建它的那个线程,因此我们可以得出结论:
1.一个线程的创建肯定是由另一个线程完成.
2.被创建线程的父线程就是创建它的线程
main函数所在的线程由jvm创建,也就是main线程,那就意味着我们前面创建的所有线程其父线程都是main线程