获取Java中的当前线程名称和线程ID

时间:2020-01-09 10:35:28  来源:igfitidea点击:

在本文中,我们将介绍如何在Java中创建线程时设置线程名称,如何获取当前线程的名称以及如何在Java中获取线程ID。

在Java中设置线程名称

要在Java中设置线程名称,可以在构造函数中传递线程名称,或者稍后使用setName()方法进行设置。

如果我们有可运行的任务,则可以使用以下构造函数

  • public Thread(Runnable target,字符串名称)–在用于分配新Thread对象的此构造函数中,name是新线程的名称。

如果要扩展Thread类,则可以使用的另一个构造函数是:

  • Thread(String name)–此处的name参数是新线程的名称。

另一种选择是使用setName()方法

  • setName(String name)–将此线程的名称更改为等于参数名称。

在Java中获取当前正在执行的线程名称

为了获取当前正在执行的线程的名称,我们需要在当前正在执行的线程上调用getName()方法。

因此,在Java中获取线程名称是这两种方法的组合。

  • currentThread()–返回对当前正在执行的线程对象的引用。这是一种静态方法。
  • getName()–返回该线程的名称。

例如

Thread.currentThread().getName();

在Java中获取线程ID

在线程中唯一标识Java线程的另一种方法是通过线程的ID。要获取线程ID,可以使用在当前执行的线程上调用的getId()方法。

  • getId()–返回此线程的标识符。线程ID是创建该线程时生成的正整数。线程ID是唯一的,并且在其生命周期内保持不变。当线程终止时,可以重新使用该线程ID。

设置和获取线程名称和线程ID Java示例

在该示例中,创建了三个线程,其中两个线程名称作为构造函数中的参数传递,其中其中一个线程名称使用setName()方法设置。

稍后,在Runnable的run方法中显示当前正在执行的线程的名称和线程ID。

public class PrintNumbers {
  public static void main(String[] args) {
    // Creating 3 threads, passing thread name as arg
    Thread t1 = new Thread(new NumberRunnable(), "T1");
    Thread t2 = new Thread(new NumberRunnable(), "T2");
    Thread t3 = new Thread(new NumberRunnable());
    // setting name using setName method
    t3.setName("Thread3");
    t1.start();
    t2.start();
    t3.start();
  }
}
class NumberRunnable implements Runnable{
  @Override
  public void run() {   
    // Getting thread's name
    System.out.println("Current Thread Name- " + Thread.currentThread().getName());
    // Getting thread's ID
    System.out.println("Current Thread ID- " + Thread.currentThread().getId() + " For Thread- " + Thread.currentThread().getName());                       
  }
}

输出:

Current Thread Name- T1
Current Thread Name- Thread3
Current Thread Name- T2
Current Thread ID- 12 For Thread3
Current Thread ID- 10 For T1
Current Thread ID- 11 For T2