Las ventajas de los hilos en Java incluyen que toman menos tiempo para crear y cerrar que los procesos, permiten una comunicación más sencilla entre tareas, y pueden ejecutar múltiples tareas simultáneamente para obtener resultados más rápidos. Las desventajas son que cuando un hilo realiza una llamada al sistema, bloquea a todos los demás hilos del proceso; una mala sincronización entre hilos puede causar inconsistencia de datos; y los hilos dependen más del programa principal que los procesos para recursos.
1. “Ventajas y desventajas de los hilos en JAVA”
VENTAJAS DESVENTAJAS
Toma menos tiempo la creación de
nuevos threads que de nuevos procesos.
Es más sencillo la comunicación (paso de
mensajes por ejemplo) entre hilos de una
misma tarea que entre diferentes
procesos.
La comunicación entre threads se puede
hacer sin necesidad de invocar al sistema
operativo
Corren sobre cualquier sistema operativo
que soporte bibliotecas de threads
Toma menos tiempo cerrar un thread que
un proceso.
Se los puede optimizar a nivel de
aplicación
Los hilos eliminan su contexto y pila al
finalizar.
Programas con menor tiempo de
ejecución ya que puede ejecutar varias
tareas al momento para obtener un
resultado.
Los programas operan con mayor
velocidad en sistemas de computadores
con múltiples CPUs ya que los hilos del
programa se prestan verdaderamente
para la ejecución concurrente
Se puede planificar la ejecución de cada
hilo a diferencia de un proceso donde el
programador no puede intervenir en el
planteamiento de su ejecución
Cuando un hilo realiza una llamada al
sistema, se bloquea el mismo y también el
resto de los hilos del proceso.
Todas las llamadas al sistema las maneja
el núcleo y por lo tanto tiene un mayor
costo para él.
Si un thread realiza un system call,
(llamada al sistema operativo), produce el
bloqueo de todo el proceso
Dado que el kernel ve un solo proceso no
puede explotar las ventajas de sistemas de
multiprocesadores
Una mala sincronización entre threads
puede conducir a inconsistencia de los
datos.
El uso de threads podría ocasionar una
situación conocida como la exclusión
mutua (que consiste en que dos o más
procesos no se dejan terminar unos a
otros, porque se bloquean entre ellos),
esto ocurre al ser los threads dos tareas
concurrentes.
Los hilos se bloquean fácilmente a
comparación de un proceso.
Requieren mayor espacio en el núcleo
para las tablas y la pila de los hilos.
El proceso sigue en ejecución mientras al
menos uno de sus hilos de ejecución siga
activo. Cuando el proceso finaliza, todos
sus hilos de ejecución también han
terminado.
Mientras que los procesos mantienen su
propio espacio de direcciones y entorno de
operaciones, los hilos dependen de un
programa padre en lo que se refiere a
recursos de ejecución