《Java多线程编程核心技术》——1.3节currentThread()方法

本节书摘来自华章社区《Java多线程编程核心技术》一书中的第1章,第1.3节currentThread()方法,作者高洪岩,更多章节内容可以访问云栖社区“华章社区”公众号查看

1.3 currentThread()方法
currentThread()方法可返回代码段正在被哪个线程调用的信息。下面通过一个示例进行说明。
创建t6项目,创建Run1.java类代码如下:

public class Run1 {
    public static void main(String[] args) {
        System.out.println(Thread.currentThread().getName());
    }
}

程序运行结果如图1-21所示。


《Java多线程编程核心技术》——1.3节currentThread()方法

结果说明,main方法被名为main的线程调用。
继续实验,创建MyThread.java类。代码如下:

public class MyThread extends Thread {
    public MyThread() {
        System.out.println("构造方法的打印:" + Thread.currentThread().getName());
    }
    @Override
    public void run() {
        System.out.println("run方法的打印:" + Thread.currentThread().getName());
    }
}
运行类Run2.java代码如下:
public class Run2 {
    public static void main(String[] args) {
        MyThread mythread = new MyThread();
        mythread.start();
        // mythread.run();
    }
}
程序运行结果如图1-22所示。
从图1-22中的运行结果可以发现,MyThread.java类的构造函数是被main线程调用的,而run方法是被名称为Thread-0的线程调用的,run方法是自动调用的方法。
文件Run2.java代码更改如下:
public class Run2 {
    public static void main(String[] args) {
        MyThread mythread = new MyThread();
        // mythread.start();
        mythread.run();
    }
}

运行结果如图1-23所示。


《Java多线程编程核心技术》——1.3节currentThread()方法

再来测试一个比较复杂的情况,创建测试用的项目currentThreadExt,创建Java文件CountOperate.java。代码如下:

package mythread;
public class CountOperate extends Thread {
    public CountOperate() {
        System.out.println("CountOperate---begin");
        System.out.println("Thread.currentThread().getName()="
                + Thread.currentThread().getName());
        System.out.println("this.getName()=" + this.getName());
        System.out.println("CountOperate---end");
    }
    @Override
    public void run() {
        System.out.println("run---begin");
        System.out.println("Thread.currentThread().getName()="
                + Thread.currentThread().getName());
        System.out.println("this.getName()=" + this.getName());
        System.out.println("run---end");
    }
}
创建Run.java文件,代码如下:
package test;
import mythread.CountOperate;
public class Run {
    public static void main(String[] args) {
        CountOperate c = new CountOperate();
        Thread t1 = new Thread(c);
        t1.setName("A");
        t1.start();
    }
}
程序运行结果如下:
CountOperate---begin
Thread.currentThread().getName()=main
this.getName()=Thread-0
CountOperate---end
run---begin
Thread.currentThread().getName()=A
this.getName()=Thread-0
run---end
上一篇:.Net利用Newtonsoft进行解析Json的快捷方法


下一篇:java中filter的用法 内部资料 请勿转载 谢谢合作