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多线程编程核心技术》高洪岩

posted @ 2020-02-16 17:49  纵马天涯  阅读(197)  评论(0编辑  收藏  举报