- ia Id fir folosind
Thread.getId()
în Java - ia Id curent piscină fir folosind
Thread.currentThread().getId()
în Java
în acest tutorial, vom introduce metode pentru a obține ID fir în Java. Vom vedea, de asemenea, cum putem obține ID-ul firului curent dintr-un grup de fire.
Obțineți ID-Ul Firului Folosind Firul.getId () în Java
în acest exemplu, am creat o clasă Task
care implementează clasa Runnable
deoarece avem nevoie de metoda run()
pentru a executa firul. Clasa Task
preia un nume de fir de la constructorul său, iar metoda run()
îl imprimă pe consolă atunci când este executat.
în metoda main()
, creăm două obiecte Task
în constructor și apoi două obiecte de fire în care trecem task1
și task2
pentru a atribui sarcinile.
vom apela metoda start()
folosind thread1
și thread2
pentru a executa firele. În cele din urmă, odată ce firele au fost executate, putem obține id-ul fiecărui fir folosind thread.getId()
, care returnează id-ul ca long
.
Ieșire:
Thread1's ID is: 13Thread2's ID is: 14Executing Task 2Executing Task 1
Obțineți ID-Ul Curent Al Pool-Ului Folosind Thread.currentThread ().getId () în Java
piscine fir sunt benefice atunci când vine vorba de executarea grele DE SARCINI. În exemplul de mai jos, creăm o piscină de fire folosind Executors.newFixedThreadPool(numberOfThreads)
. Putem specifica numărul de fire pe care le dorim în piscină.
clasa Task
este responsabilă pentru executarea firului în metoda run()
. Este o clasă simplă care stabilește și primește numele firului trecut în constructor. Pentru a crea mai multe sarcini, folosim o buclă for
în care sunt create cinci obiecte task
și cinci fire sunt executate în piscină.
scopul nostru este de a obține id-ul fiecărui fir care este executat în prezent. Pentru a face acest lucru, vom folosi Thread.currentThread().getId()
care returnează ID-ul firului curent. În ieșire, putem vedea ID-urile tuturor firelor care execută sarcinile individuale.
odată ce sarcinile sunt finalizate, ar trebui să oprim executarea pool-ului de fire folosind threadExecutor.shutdown()
. !threadExecutor.isTerminated()
este folosit pentru a aștepta până când threadExecutor
a fost terminat.
ieșire:
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