Thread.currentThread()和this的区别
package threadTest;
public class CountOperate extends Thread{
public CountOperate(){
//CountOperate类初始化时,main线程在执行中,是alive的;this代表新建的thread对象,线程未启动非alive
System.out.println("CountOperate -- begin");
System.out.println("Thread.currentThread().getName()= " + Thread.currentThread().getName());
System.out.println("Thread.currentThread().isAlive()= " + Thread.currentThread().isAlive());
System.out.println("this.getName()= " + this.getName());
System.out.println("this.isAlive()= " + this.isAlive());
System.out.println("CountOperate -- end ");
}
@Override
public void run(){
//当前正在执行的线程就是 A,A是alive的,而this依然是Thread-0,非alive的
System.out.println("run -- begin");
System.out.println("Thread.currentThread().getName()= " + Thread.currentThread().getName());
System.out.println("Thread.currentThread().isAlive()= " + Thread.currentThread().isAlive());
System.out.println("this.getName()= " + this.getName());
System.out.println("this.isAlive()= " + this.isAlive());
System.out.println("run -- end ");
}
}
package threadTest;
public class Run {
public static void main(String[] args){
//this就代表 c 对象,创建对象的线程就是Thread-0,此时有两个线程,还有一个是main
CountOperate c =new CountOperate();
Thread t1=new Thread(c);
//线程t1未启动,非alive
System.out.println("main begin t1 isAlive()" + t1.isAlive());
t1.setName("A");
//又启动一个线程 A,此时共三个线程。
t1.start();
//线程t1启动,alive
System.out.println("main begin t1 isAlive()" + t1.isAlive());
}
}
参考 《JAVA多线程编程核心技术》高洪岩