
Java proporciona una función llamada subprocesos múltiples que permite que varios subprocesos se ejecuten simultáneamente, lo que mejora la utilización de la CPU, el uso compartido de recursos, la respuesta del usuario, etc. Los subprocesos múltiples se usan comúnmente porque los subprocesos usan espacio de memoria compartido y, por lo tanto, no es necesario asignar memoria separada a ningún subproceso, lo que ahorra memoria y realiza una ejecución rápida. Los casos de uso más comunes en el mundo real de subprocesos múltiples son juegos de computadora, animaciones, etc.
Este artículo es una guía completa para subprocesos múltiples en Java y cubre los siguientes conceptos para una comprensión profunda:
¡Entonces empecemos!
¿Qué es multihilo?
Es un proceso que nos permite ejecutar al menos dos hilos al mismo tiempo y también se conoce como concurrencia en Java. Los subprocesos múltiples de Java maximizan la utilización de la CPU ya que todos los subprocesos se ejecutan en paralelo. Además, ahorra memoria porque los subprocesos múltiples eliminan la necesidad de asignar memoria separada a varios subprocesos.
¿Por qué es importante el multiproceso en Java?
Multithreading ofrece una amplia gama de características y la importancia de Java multithreading puede evaluarse mediante las características que se enumeran a continuación:
- Los subprocesos múltiples de Java permiten compartir recursos, por lo que se pueden compartir múltiples recursos como código, memoria, archivos, datos, etc. dentro de un proceso.
- Los subprocesos son independientes, por lo que las excepciones que se produzcan en un subproceso no afectarán el rendimiento de los demás.
- Los subprocesos múltiples en Java permiten que un programa se ejecute incluso si una determinada parte del programa está bloqueada por algún motivo o está realizando una tarea/operación prolongada.
- Ahorra tiempo ya que se pueden realizar múltiples tareas/operaciones simultáneamente.
Aquí solo se enumeran algunas características, pero muchas otras, como la escalabilidad, la rentabilidad, etc., muestran el dominio de los subprocesos múltiples.
Ciclo de vida de hilos en Java
Hasta ahora hemos aprendido qué es el subprocesamiento múltiple y por qué es tan importante en Java. Ahora conozcamos el ciclo de vida del subproceso, que consta de diferentes estados, como se indica a continuación:
Nuevo: En este estado, se inicia/crea un hilo usando «Hilo» clase o «corriendo» Interfaz. Permanece en este estado hasta que un programa inicia/inicia un hilo.
Ejecutable: Dentro de este estado, la instancia del subproceso se llama mediante un método start() incorporado y el subproceso permanece en el estado ejecutable hasta que se ejecuta una tarea.
Operación: En este estado, un hilo comienza a ejecutarse.
Esperando: Dentro de esta fase, el subproceso entra en un estado temporalmente inactivo, lo que significa que un subproceso está inactivo, esperando o bloqueado.
Terminado/Muerto: Un subproceso ingresa a este estado cuando ocurre una excepción o cuando el subproceso completa su ejecución/procesamiento.
Métodos integrados de Java para subprocesos múltiples
Hay una lista de métodos Java predefinidos que se pueden usar dentro de los subprocesos para lograr una funcionalidad diferente. Algunos métodos comúnmente utilizados se enumeran en la siguiente tabla:
nombre del método | descripción |
---|---|
Comienzo() | Se utiliza para iniciar la ejecución del hilo. |
correr() | realiza una acción específica en un hilo. |
obtenerNombre() | devuelve el nombre del hilo. |
producir () | Suspende el subproceso actual y permite que otros lo ejecuten. |
setPriority(int nueva prioridad) | Indica la prioridad del hilo. |
obtenerPrioridad() | devuelve la prioridad del hilo. |
Dormir (int milisegundos) | Duerme el subproceso durante un período de tiempo especificado. |
obtenerId() | devuelve el id del hilo. |
Implementación práctica de multithreading en Java
Ahora es el momento de comprender el concepto de subprocesos múltiples de Java a través de la implementación práctica. Entonces, vamos a ver un ejemplo en el que hacemos subprocesos múltiples y usamos algunos de los métodos integrados mencionados anteriormente.
ejemplo
En este ejemplo, haremos el subprocesamiento múltiple implementando la interfaz ejecutable:
en público Clase Ejemplo de subprocesamiento múltiple implementado ejecutable {
@Sobrescribir
en público Vacío correr() {
}
en público estático Vacío principalmente(línea[] argumentos) {
Hilo hiloObj1 = Nuevo hilo(«subproceso1»);
Hilo hiloObj2 = Nuevo hilo(«hilo2»);
subprocesoObj1.comienzo();
subprocesoObj2.comienzo();
Sistema.fuera de.imprimir(«Nombre del primer hilo:» + subprocesoObj1.obtenerNombre());
Sistema.fuera de.imprimir(«Nombre del segundo hilo: « + subprocesoObj2.obtenerNombre());
}
}
En el fragmento de código anterior, implementamos la interfaz Java Runnable y dentro de la clase usamos el @Sobrescribir Nota que muestra que el «Ejemplo de subprocesos múltiples» sobrescribe el correr() Método de interfaz ejecutable. Después de eso, creamos varios hilos y comenzamos la ejecución del hilo con el Comienzo() Método. Finalmente, obtenemos los nombres de los hilos usando obtenerNombre() e imprímalo como se muestra en el siguiente fragmento:
Esto verifica el funcionamiento de subprocesos múltiples en Java.
En el ejemplo anterior, realizamos subprocesos múltiples implementando ejecutable Interfaz. Sin embargo, también podemos hacer subprocesos múltiples extendiendo uno predefinido hilo clase como se muestra en el siguiente fragmento:
en público Clase Ejemplo de subprocesamiento múltiple expandido hilo
Al extender la clase Thread, puede aprovechar la funcionalidad de los métodos Java predefinidos.
Conclusión
Los subprocesos múltiples permiten que dos o más subprocesos se ejecuten simultáneamente, lo que maximiza el uso de la CPU, ahorra tiempo y memoria, etc. Los subprocesos múltiples se pueden lograr extendiendo o implementando la clase Thread o la interfaz Runnable. Se pueden usar varios métodos integrados de la clase Thread y la interfaz Runnable en subprocesos múltiples para realizar varias funciones, p. B. detener el subproceso actual y permitir que se ejecuten otros subprocesos, establecer la prioridad para los subprocesos, etc.
Este artículo explica varios aspectos de los subprocesos múltiples, tales como: B. qué es multithreading, su significado, su ciclo de vida, sus métodos y su implementación práctica.