//设置线程名称
public class Test5 {
public static void main(String[] args) {
//1)在匿名内部类结尾处设置线程名称
Thread t1=new Thread(new Runnable() {
@Override
public void run() {
int i=1;
System.out.println(Thread.currentThread().getName()+"\ti="+i);
//Thread.currentThread()返回当前线程,getName()获取名称
}
},"i1: ");//i1线程名称
t1.start();//运行结果:i1: i=1
//2)匿名内部类并无指定线程名称时,程序自定义设置线程名称
new Thread(new Runnable() {
@Override
public void run() {
int j=2;
System.out.println(Thread.currentThread().getName()+"\tj="+j);
}
}).start();
//运行结果:Thread-0 j=2,因为没有线程名称程序自定义线程命名:Thread-0
//3)调用Thread.setName()方法指定匿名内部类线程名称
Thread t2=new Thread(new Runnable() {
@Override
public void run() {
int x=3;
System.out.println(Thread.currentThread().getName()+"\tx="+x);
}
});
t2.setName("x3");//x3线程名称
t2.start();
//运行结果:x3 x=3
//执行main主线程
int y=4;
System.out.println("y="+y);
//Thread.isAlive()判断线程是否结束
System.out.println(t1.isAlive());//false
System.out.println(t2.isAlive());//true
/*这里运行结果都是固定,并不会因为执行多次线程程序顺序就会发生变化
以上代码只是设置线程名称*/
}
}