- Obtener Id de Subproceso Usando
Thread.getId()
en Java - Obtener Id de grupo de subprocesos actual Usando
Thread.currentThread().getId()
en Java
En este tutorial, presentaremos métodos para obtener id de subproceso en Java. También veremos cómo podemos obtener el id del subproceso actual de un grupo de subprocesos.
Obtener Id De Hilo Usando Hilo.getId () en Java
En este ejemplo, hemos creado una clase Task
que implementa la clase Runnable
porque necesitamos su método run()
para ejecutar el subproceso. La clase Task
toma un nombre de hilo de su constructor, y el método run()
lo imprime en la consola cuando se ejecuta.
En el método main()
, creamos dos objetos Task
en el constructor y luego dos objetos threads en los que pasamos task1
y task2
para asignar las tareas.
Llamaremos al método start()
usando thread1
y thread2
para ejecutar los subprocesos. Por fin, una vez que se han ejecutado los subprocesos, podemos obtener el id de cada subproceso usando thread.getId()
, que devuelve el id como long
.
Salida:
Thread1's ID is: 13Thread2's ID is: 14Executing Task 2Executing Task 1
Obtener El Id Del Grupo De Subprocesos Actual Usando Thread.currentThread().getId () en Java
Los grupos de subprocesos son beneficiosos cuando se trata de la ejecución pesada de tareas. En el siguiente ejemplo, creamos un grupo de subprocesos usando Executors.newFixedThreadPool(numberOfThreads)
. Podemos especificar el número de hilos que queremos en el grupo.
La clase Task
es responsable de ejecutar el hilo en el método run()
. Es una clase simple que establece y obtiene el nombre del hilo pasado en el constructor. Para crear varias tareas, utilizamos un bucle for
en el que se crean cinco objetos task
y se ejecutan cinco subprocesos en el grupo.
Nuestro objetivo es obtener el id de cada hilo que se está ejecutando actualmente. Para hacer eso, usaremos Thread.currentThread().getId()
que devuelve el id del hilo actual. En la salida, podemos ver los id de todos los subprocesos que ejecutan las tareas individuales.
Una vez completadas las tareas, deberíamos dejar de ejecutar el grupo de subprocesos usando threadExecutor.shutdown()
. !threadExecutor.isTerminated()
se utiliza para esperar hasta que threadExecutor
haya finalizado.
Salida:
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