深入学习Thread类

一.             线程的名字

下面来看一下Thread类的name属性,它的类型是String。它其实就是线程的名字。在Thread类中,有String getName()void setName(String)两个方法用来设置和获取这个属性的值。

同时,Thread类还提供相应的构造方法,让Thread类的对象在创建的时候就有一个名字。构造方法如下:

a.Thread(String name):接受一个String实例为参数的Thread类的构造方法,这个参数就是这个线程的名字

b.Thread(Runnable target,String name):接受一个Runnable实例和一个String实例为参数的Thread类构造方法。其中Runnable中的run()方法就是线程将要执行的方法;String实例就是这个线程的名字。

如果在创建一个Thread实例的时候没有为Thread实例提供名字,那么Thread实例将使用一个默认的名字。对于在程序中创建的线程,线程的默认名字一般是“Thread-”加上一个递增的整数;而对于主线程,它的名字一般会被设置为main

       实例:

package com.bijian.study;

public class ShowThreadName extends Thread {  //继承自Thread类

    public ShowThreadName() {   //构造方法,没有参数
       super();   //调用父类相应的构造方法
    }

    public ShowThreadName(String name) {   //构造方法,提供线程的名字
       super(name);  //调用父类相应的构造方法
    }

    public void run() {  //覆盖run()方法
       System.out.println("这个线程的名字是:" + this.getName());//输出线程的名字
    }
}

  

package com.bijian.study;
public class ShowThreadNameMain {
    public static void main(String[] args) {

       //使用无参数的构造方法创建Thread类实例,这是它将有一个默认的名字

       ShowThreadName defaultName = new ShowThreadName();

       //使用构造方法给线程指定一个名字

       ShowThreadName name = new ShowThreadName("线程的名字");

       //启动两个线程

       defaultName.start();

       name.start();

    }
}

 

运行结果:

    这个线程的名字是:Thread-0

这个线程的名字是:线程的名字

   

二.             得到当前的线程

Thread类的静态方法currentThread()

Java的线程是执行Java程序的基本单位,也就是说,所有的Java代码最终都是由线程执行的。如果在程序中需要得到“执行当前代码的线程的引用”,那么就可以使用Thread类的静态方法Thread.currentThread()

这个方法的返回值是Thread的引用,这个引用所指向的Thread类的实例正是“指向当前代码的线程”。

 

你可能感兴趣的:(java,thread,多线程,java多线程)