Obtenir ID de thread en Java
-
Obtenir l’ID de thread en utilisant
Thread.getId()
en Java -
Obtenir l’ID du pool de threads actuel à l’aide de
Thread.currentThread().GetId()
en Java
Dans ce tutoriel, nous présenterons les méthodes pour obtenir l’ID de thread en Java. Nous verrons également comment nous pouvons obtenir l’id du thread actuel à partir d’un pool de threads.
Obtenir l’ID de thread en utilisant Thread.getId()
en Java
Dans cet exemple, nous avons créé une classe Task
qui implémente la classe Runable
car nous avons besoin de sa méthode run()
pour exécuter le thread. La classe Task
prend un nom de thread de son constructeur, et la méthode run()
l’imprime sur la console lorsqu’elle est exécutée.
Dans la méthode main()
, nous créons deux objets Task
dans le constructeur et ensuite deux objets threads dans lesquels nous passons task1
et task2
pour assigner les tâches.
Nous appellerons la méthode start()
en utilisant thread1
et thread2
pour exécuter les threads. Enfin, une fois que les threads ont été exécutés, nous pouvons obtenir l’identifiant de chaque thread en utilisant thread.getId()
, qui renvoie l’identifiant sous la forme d’un long
.
public class GetThreadID {
public static void main(String[] args) {
Task task1 = new Task("Task 1");
Task task2 = new Task("Task 2");
Thread thread1 = new Thread(task1);
Thread thread2 = new Thread(task2);
thread1.start();
thread2.start();
System.out.println("Thread1's ID is: " + thread1.getId());
System.out.println("Thread2's ID is: " + thread2.getId());
}
}
class Task implements Runnable {
private String name;
Task(String name) {
this.name = name;
}
@Override
public void run() {
System.out.println("Executing " + name);
}
}
Production :
Thread1's ID is: 13 Thread2's ID is: 14 Executing Task 2 Executing Task 1
Obtenir l’ID du pool de threads actuel à l’aide de Thread.currentThread().GetId()
en Java
Les pools de filières sont bénéfiques lorsqu’il s’agit d’exécuter des tâches lourdes. Dans l’exemple ci-dessous, nous créons un groupe de discussion en utilisant Executors.newFixedThreadPool(numberOfThreads)
. Nous pouvons spécifier le nombre de threads que nous voulons dans le pool.
La classe Task
est responsable de l’exécution du thread dans la méthode run()
. C’est une simple classe qui définit et récupère le nom du fil de discussion passé dans le constructeur. Pour créer des tâches multiples, nous utilisons une boucle for
dans laquelle cinq objets task
sont créés, et cinq threads sont exécutés dans le pool.
Notre objectif est d’obtenir l’identifiant de chaque thread en cours d’exécution. Pour ce faire, nous utiliserons Thread.currentThread().GetId()
qui renvoie l’identifiant du fil courant. Dans la sortie, nous pouvons voir les id de tous les threads qui exécutent les tâches individuelles.
Une fois les tâches terminées, nous devrions arrêter d’exécuter le pool de threads en utilisant threadExecutor.shutdown()
. !threadExecutor.isTerminated()
est utilisé pour attendre que le threadExecutor
soit terminé.
package com.company;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class GetThreadID {
public static void main(String[] args) {
int numberOfThreads = 5;
ExecutorService threadExecutor = Executors.newFixedThreadPool(numberOfThreads);
for (int i = 0; i < 5; i++) {
Task task = new Task("Task " + i);
System.out.println("Created Task: " + task.getName());
threadExecutor.execute(task);
}
threadExecutor.shutdown();
while (!threadExecutor.isTerminated()) {
}
System.out.println("All threads have completed their tasks");
}
}
class Task implements Runnable {
private String name;
Task(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public void run() {
System.out.println("Executing: " + name);
System.out.println(name + " is on thread id #" + Thread.currentThread().getId());
}
}
Production :
Created Task: Task 0
Created Task: Task 1
Created Task: Task 2
Created Task: Task 3
Created Task: Task 4
Executing: Task 0
Executing: Task 2
Executing: Task 1
Executing: Task 4
Executing: Task 3
Task 0 is on thread id #13
Task 1 is on thread id #14
Task 4 is on thread id #17
Task 2 is on thread id #15
Task 3 is on thread id #16
All threads have completed their tasks
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn