- Javaで
Thread.getId()
を使用してスレッドIdを取得する - Javaで
Thread.currentThread().getId()
を使用して現在のスレッドプールIdを取得する
このチュートリアルでは、Javaでスレッドidを取得する方法を紹介します。 また、スレッドプールから現在のスレッドのidを取得する方法についても説明します。
スレッドを使用してスレッドIdを取得します。この例では、スレッドを実行するにはrun()
メソッドが必要なため、Runnable
クラスを実装するクラスTask
を作成しました。 Task
クラスはコンストラクターからスレッド名を受け取り、run()
メソッドは実行時にコンソールに出力します。
main()
メソッドでは、コンストラクタに二つのTask
オブジェクトを作成し、次に二つのthreadsオブジェクトを作成してtask1
とtask2
を渡してタスクを割り当てます。
thread1
とthread2
を使用してstart()
メソッドを呼び出してスレッドを実行します。 最後に、スレッドが実行されると、thread.getId()
を使用して各スレッドのidを取得でき、idはlong
として返されます。
:
Thread1's ID is: 13Thread2's ID is: 14Executing Task 2Executing Task 1
Threadを使用して現在のスレッドプールIdを取得します。currentThread()を使用しています。javaのgetId()
スレッドプールは、タスクの重い実行になると有益です。 以下の例では、Executors.newFixedThreadPool(numberOfThreads)
を使用してスレッドプールを作成します。 プールに必要なスレッドの数を指定できます。
Task
クラスはrun()
メソッドでスレッドを実行します。 これは、コンストラクタで渡されたスレッドの名前を設定して取得する単純なクラスです。 複数のタスクを作成するには、for
ループを使用して、5つのtask
オブジェクトが作成され、プール内で5つのスレッドが実行されます。
私たちの目標は、現在実行されているすべてのスレッドのidを取得することです。 これを行うには、現在のスレッドのidを返すThread.currentThread().getId()
を使用します。 出力では、個々のタスクを実行するすべてのスレッドのidを見ることができます。
タスクが完了したら、threadExecutor.shutdown()
を使用してスレッドプールの実行を停止する必要があります。 !threadExecutor.isTerminated()
はthreadExecutor
が終了するまで待機するために使用されます。
:
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