Java线程的命名与取得当前线程信息

线程的命名:

public Thread(Runnable target,String name);
使用:new Thread(对象的引用,“线程名”).start();
public final synchronized void setName(String name);
使用:Thread.currentThread.setName(“线程名”)

线程信息的取得

public static native Thread currentThread();
使用:Thread.currentThread();//取得当前线程的所有信息
public final String getName();
使用:Thread.currentThread.getName();//取得当前线程的对象

注: native指的是告诉编译器该方法是本地方法,不是用java编写的是用其他语言写的(一般是c/c++)。说明这个方法是原生函数,被编写在DLL(动态链接函数)中,Java使用时会自动去操作系统中调用。

举例:

class MyThread implements Runnable {
    @Override
    public synchronized void run() {
        System.out.println("当前线程" + Thread.currentThread());
        System.out.println("线程名称" + Thread.currentThread().getName());
        System.out.println("线程ID:"+Thread.currentThread().getId());
        System.out.println("线程优先级"+Thread.currentThread().getPriority());
    }
}

class Test{
    public static void main(String[] args){
        MyThread myThread = new MyThread();
        new Thread(myThread).start();
        new Thread(myThread).start();
        new Thread(myThread,"abaka").start();
        Thread thread = new Thread(myThread);
        thread.setName("abaka2");
        thread.start();
    }
}

结果:

当前线程Thread[Thread-0,5,main]
线程名称Thread-0
线程ID:11
线程优先级5
当前线程Thread[Thread-1,5,main]
线程名称Thread-1
线程ID:12
线程优先级5
当前线程Thread[abaka,5,main]
线程名称abaka
线程ID:13
线程优先级5
当前线程Thread[abaka2,5,main]
线程名称abaka2
线程ID:14
线程优先级5

注: 当没有为线程命名时,线程默认从Thread-0开始。

猜你喜欢

转载自blog.csdn.net/qq_39032310/article/details/84071774
今日推荐