- Thread-ID mit
Thread.getId()
in Java abrufen - Aktuelle Thread-Pool-ID mit
Thread.currentThread().getId()
in Java abrufen
In diesem Lernprogramm werden Methoden zum Abrufen der Thread-ID in Java vorgestellt. Wir werden auch sehen, wie wir die ID des aktuellen Threads aus einem Thread-Pool abrufen können.
Thread-ID mit Thread abrufen.getId() in Java
In diesem Beispiel haben wir eine Klasse Task
erstellt, die die Klasse Runnable
implementiert, da wir ihre Methode run()
benötigen, um den Thread auszuführen. Die Task
-Klasse übernimmt einen Thread-Namen von ihrem Konstruktor, und die run()
-Methode druckt ihn auf der Konsole, wenn er ausgeführt wird.
In der main()
-Methode erstellen wir zwei Task
-Objekte im Konstruktor und dann zwei Threads-Objekte, in denen wir task1
und task2
übergeben, um die Aufgaben zuzuweisen.
Wir rufen die start()
-Methode mit thread1
und thread2
auf, um die Threads auszuführen. Sobald die Threads ausgeführt wurden, können wir die ID jedes Threads mit thread.getId()
abrufen, wodurch die ID als long
zurückgegeben wird.
Ausgang:
Thread1's ID is: 13Thread2's ID is: 14Executing Task 2Executing Task 1
Aktuelle Thread-Pool-ID mit Thread abrufen.In: currentThread().getId() in Java
Thread-Pools sind vorteilhaft, wenn es um die schwere Ausführung von Aufgaben geht. Im folgenden Beispiel erstellen wir einen Thread-Pool mit Executors.newFixedThreadPool(numberOfThreads)
. Wir können die Anzahl der Threads angeben, die wir im Pool haben möchten.
Die Klasse Task
ist für die Ausführung des Threads in der Methode run()
verantwortlich. Es ist eine einfache Klasse, die den Namen des Threads festlegt und im Konstruktor übergibt. Um mehrere Aufgaben zu erstellen, verwenden wir eine for
-Schleife, in der fünf task
-Objekte erstellt und fünf Threads im Pool ausgeführt werden.
Unser Ziel ist es, die ID jedes Threads abzurufen, der gerade ausgeführt wird. Dazu verwenden wir Thread.currentThread().getId()
, das die ID des aktuellen Threads zurückgibt. In der Ausgabe sehen wir die IDs aller Threads, die die einzelnen Aufgaben ausführen.
Sobald die Aufgaben abgeschlossen sind, sollten wir die Ausführung des Thread-Pools mit threadExecutor.shutdown()
beenden. !threadExecutor.isTerminated()
wird verwendet, um zu warten, bis threadExecutor
beendet wurde.
Ausgang:
Created Task: Task 0Created Task: Task 1Created Task: Task 2Created Task: Task 3Created Task: Task 4Executing: Task 0Executing: Task 2Executing: Task 1Executing: Task 4Executing: Task 3Task 0 is on thread id #13Task 1 is on thread id #14Task 4 is on thread id #17Task 2 is on thread id #15Task 3 is on thread id #16All threads have completed their tasks