线程的命名:
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开始。