一、线程的默认名称
如果没有显示地指定一个线程的名称,线程会以"Thread-"和一个在JVM中不断自增的数字组合,形成线程名称。
package threadName;
import java.util.stream.IntStream;
/**
* @ClassName ThreadName
* @Description TODO
* @Author Cays
* @Date 2019/5/1 10:40
* @Version 1.0
**/
public class ThreadName {
public static void main(String[] args) {
IntStream.range(0,5).boxed().map(i->new Thread(
()-> System.out.println(Thread.currentThread().getName())
)).forEach(Thread::start);
}
}
二、命名线程
线程构造函数:
Thread(String name)
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
Thread(ThreadGroup group, Runnable target, String name)
Thread(ThreadGroup group, String name)
线程启动前可以对线程名称进行修改。
package threadName;
import java.util.stream.IntStream;
public class ThreadName {
public static void main(String[] args) {
/*IntStream.range(0,5).boxed().map(i->new Thread(
()-> System.out.println(Thread.currentThread().getName())
)).forEach(Thread::start);*/
Thread a=new Thread(()-> System.out.println(Thread.currentThread().getName())
,"aaa");
a.setName("bbbb");
a.start();
a.setName("ccc");
}
}
三、线程的父子关系
- 一个线程的创建由另一个线程完成
- 被创建线程的父线程是创建它的线程
- main函数所在的线程由JVM创建,即main线程,意味着我们创建的线程的父线程都是main线程