- Get Thread Id Using
Thread.getId()
in Java - Get Current Thread Pool Id Using
Thread.currentThread().getId()
in Java
In questo tutorial, introdurremo metodi per ottenere thread id in Java. Vedremo anche come possiamo ottenere l’ID del thread corrente da un pool di thread.
Ottieni l’ID del thread usando il thread.getId () in Java
In questo esempio, abbiamo creato una classe Task
che implementa la classe Runnable
perché abbiamo bisogno del suo metodo run()
per eseguire il thread. La classe Task
prende un nome di thread dal suo costruttore e il metodo run()
lo stampa sulla console quando viene eseguito.
Nel metodo main()
, creiamo due oggetti Task
nel costruttore e quindi due oggetti thread in cui passiamo task1
e task2
per assegnare le attività.
Chiameremo il metodo start()
usando thread1
e thread2
per eseguire i thread. Infine, una volta eseguiti i thread, possiamo ottenere l’ID di ogni thread usando thread.getId()
, che restituisce l’id come long
.
Uscita:
Thread1's ID is: 13Thread2's ID is: 14Executing Task 2Executing Task 1
Ottieni l’ID del pool di thread corrente usando il thread.currentThread ().getId () in Java
I pool di thread sono utili quando si tratta dell’esecuzione pesante delle attività. Nell’esempio seguente, creiamo un pool di thread usando Executors.newFixedThreadPool(numberOfThreads)
. Possiamo specificare il numero di thread che vogliamo nel pool.
La classe Task
è responsabile dell’esecuzione del thread nel metodo run()
. È una classe semplice che imposta e ottiene il nome del thread passato nel costruttore. Per creare più attività, usiamo un ciclo for
in cui vengono creati cinque oggetti task
e cinque thread vengono eseguiti nel pool.
Il nostro obiettivo è ottenere l’id di ogni thread che viene eseguito attualmente. Per fare ciò, useremo Thread.currentThread().getId()
che restituisce l’ID del thread corrente. Nell’output, possiamo vedere gli ID di tutti i thread che eseguono le singole attività.
Una volta completate le attività, dovremmo interrompere l’esecuzione del pool di thread utilizzando threadExecutor.shutdown()
. !threadExecutor.isTerminated()
viene utilizzato per attendere che threadExecutor
sia stato terminato.
Uscita:
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