Java
Multihilos
Contenido
Java theads
*Las clases de theads
*Como iniciar una tarea en threads
*Lanzar tarea dentro de java con theads
*Creación y ejecución de un theads
*Ejemplo de hilo
*Ejemplo test
*Ejemplo de ejecución
*Ejecución star/run
*Propiedades
*Reparto de tiempo
*Ciclo de vida de un hilo
*Definición de un hilo interfaz runnable
*Utilización de la interface runnable
*Revisión ejemplo 2
*Sincronización de hilo de java 2
*Definición de monitor de java
*Bloqueo de objetos & synchronized
*Sincronización cooperativa
*Cola monitorizada
*Tarea accediendo al buffer
*Ejecución
*Un mundo virtual
*Diagrama uml del programa
*Clase de juego
*Clase de escenario
*Clase de habitación
*Clase de vector cosa
*Clase cosa
*Clase actor
*Reunificación de tareas
*Método join
*Identificador de presión
*Problema transiciones bancaria
*Métodos de hilos
*Errores comunes llamar run en lugar de star
*Manipulación de hilo
*Suspensión de hilo
*Parada de un hilo
Multiprocesamiento en Java
*Ventajas del multithreading de Java
*Multitarea
*Multitarea basada en procesos (multiprocesamiento)
*Multitarea basada en subprocesos (Multithreading)
*Clase de subproceso de Java
*Métodos de subprocesos de Java
*Preguntas de opción múltiple sobre subprocesamiento
múltiple en Java
*Ciclo de vida de un hilo (estados del hilo)
*Explicación de los diferentes estados de los
subprocesos
*Implementación de estados de subprocesos
*Programa Java para demostrar estados de
subprocesos
*Hilos en Java | Cómo crear un hilo en Java
*Clase de hilo
*Implementando una interfaz ejecutable
*Ejemplo de subproceso Java mediante la
implementación de la interfaz
*Uso de la clase Thread: Thread (Runnable r, String
name)
*Uso de la clase Thread: Thread (String Name)
*Programador de subprocesos en Java
*Algoritmos del programador de subprocesos
*Programación por orden de llegada:
*Programación por franjas de tiempo:
*Programación de prioridad preventiva:
*Funcionamiento del programador de subprocesos de
Java
*hread. sleep () en Java con ejemplos
*podemos empezar un hilo dos veces
*Qué pasa si llamamos directamente al método run ()
de Java en lugar del método start
*Método join () de Java
*Nombrar hilo y hilo actual
*Prioridad de un hilo (Thread Priority)
*Métodos de establecimiento y obtención de prioridad
de subprocesos
*Hilo de demonio en Java
*Grupo de subprocesos de Java
*Constructores de la clase ThreadGroup
*Gancho de apagado de Java
*Cómo realizar una única tarea mediante varios
subprocesos en Java?
*Java Garbage Collection
*Java Runtime class
*Sincronización en Java
*Bloque sincronizado en Java
*Sincronización estática
*Interbloqueo en Java
*Comunicación entre subprocesos en Java
*Interrumpir un hilo
*Monitor reentrante en Java
*Clase Java FileOutputStream
¿Qué es un hilo en Java?
Un hilo en Java es la dirección o ruta que se toma mientras se ejecuta un
programa. Generalmente, todos los programas tienen al menos un hilo,
conocido como hilo principal, que es proporcionado por la JVM o Máquina
Virtual Java al inicio de la ejecución del programa. En este punto, cuando
se proporciona el hilo principal, el método main() es invocado por el hilo
principal.
Un subproceso es un subproceso de ejecución en un programa . Una
aplicación que se ejecuta en la máquina virtual Java puede ejecutar va-
rios subprocesos de ejecución simultáneamente. La prioridad de cada
subproceso varía. Los subprocesos de mayor prioridad se ejecutan antes
que los de menor prioridad.
El subproceso es fundamental en el programa porque permite que se
realicen múltiples operaciones dentro de un único método. Cada subpro-
ceso del programa suele tener su propio contador de programa, pila y
variable local.
Los subprocesos en Java permiten la ejecución simultánea, dividiendo
las tareas para mejorar el rendimiento. Es esencial para gestionar opera-
ciones como E/S y comunicación de red de manera eficiente. Compren-
der los subprocesos es crucial para las aplicaciones Java que responden.
Inscríbete en un curso de Java para dominar los subprocesos y crear pro-
gramas multiproceso eficientes.
Creando un hilo en Java
Un hilo en Java se puede crear de las dos maneras siguientes:
Ampliación de la clase [Link]
En este caso, se crea un subproceso mediante una nueva clase que ex-
tiende la clase Thread y crea una instancia de esa clase. El método run()
incluye la funcionalidad que se supone que debe implementar el subpro-
ceso.
A continuación se muestra un ejemplo para crear un hilo extendiendo la
clase [Link].
Producción
Aquí, start() se utiliza para crear un nuevo hilo y hacerlo ejecutable. El nuevo hilo
comienza dentro del método void run().
Implementación de la interfaz Runnable
Este es el método sencillo para crear un hilo entre los dos. En este caso,
se crea una clase para implementar la interfaz ejecutable y luego el mé-
todo run().
El código para ejecutar el hilo siempre debe escribirse dentro del méto-
do run().
Aquí tienes un código para que lo entiendas.
Producción
El método start() se utiliza para llamar al método void run(). Cuando se llama a start(), se
le asigna una nueva pila al hilo y se invoca run() para introducir un nuevo hilo en el pro-
grama.
¿Quieres un trabajo de desarrollo de software de primer nivel?
¡Empieza aquí!
Desarrollador Full Stack - MERN StackPrograma Explorar
Ciclo de vida de un hilo en Java
El ciclo de vida de un hilo en Java se refiere a las transformaciones de
estado de un hilo que comienzan con su nacimiento y terminan con su
muerte. Cuando se genera y ejecuta una instancia de hilo llamando al
método start() de la clase Thread, el hilo entra en el estado ejecutable.
Cuando se llaman los métodos sleep() o wait() de la clase Thread, el
hilo entra en un modo no ejecutable.
El subproceso vuelve del estado no ejecutable al estado ejecutable e ini-
cia la ejecución de la instrucción. El subproceso finaliza cuando sale del
proceso run(). En Java , estas transformaciones del estado del subproce-
so se denominan ciclo de vida del subproceso.
Básicamente, hay 4 etapas en el ciclo de vida de un hilo, como se deta-
lla a continuación:
1. Nuevo
2. Ejecutable
3. Correr
4. Bloqueado (estado no ejecutable)
5. Muerto
Nuevo Estado
A medida que utilizamos la clase Thread para construir una entidad de hilo, el
hilo nace y se define como si estuviera en el estado New. Es decir, cuando se
crea un hilo, este entra en un nuevo estado, pero el método start() en la instan-
cia aún no se ha invocado.
Estado ejecutable
Un subproceso en estado ejecutable está preparado para ejecutar el código. Cuando se
llama a la función start() de un nuevo subproceso, este pasa a un estado ejecutable.
En el entorno ejecutable, el subproceso está listo para ejecutarse y está esperando la
disponibilidad del procesador (tiempo de CPU). Es decir, el subproceso ha ingresado en
la cola (línea) de subprocesos que esperan su ejecución.
Estado de ejecución
El estado de ejecución implica que el procesador (CPU) ha asignado un interva-
lo de tiempo al subproceso para su ejecución. Cuando el programador de su-
bprocesos elige un subproceso del estado ejecutable para su ejecución, este
pasa al estado de ejecución.
En el estado de ejecución, el procesador asigna tiempo al subproceso para su
ejecución y ejecuta su procedimiento de ejecución. Este es el estado en el que
el subproceso ejecuta directamente sus operaciones. Solo desde el estado eje-
cutable un subproceso entrará en el estado de ejecución.
Estado bloqueado
Cuando el subproceso está activo, es decir, el objeto de clase del su-
bproceso persiste, pero el programador no puede seleccionarlo para su
ejecución. Ahora está inactivo.
Estado muerto
Cuando la función run() de un subproceso finaliza la ejecución de sentencias, este auto-
máticamente muere o entra en estado inactivo. Es decir, cuando un subproceso sale
del proceso run(), se termina o se elimina. Cuando se invoca la función stop(), un su-
bproceso también muere.
Prioridades de subprocesos de Java
La cantidad de servicios asignados a un subproceso determinado se de-
nomina prioridad. A cualquier subproceso generado en la JVM se le asig-
na una prioridad. La escala de prioridades va de 1 a 10.
1 se conoce como la prioridad más baja.
5 se conoce como prioridad estándar.
10 representa el nivel más alto de prioridad.
La prioridad del hilo principal se establece en 5 de forma predetermina-
da y cada hilo secundario tendrá la misma prioridad que su hilo princi-
pal. Tenemos la capacidad de ajustar la prioridad de cualquier hilo, ya
sea el hilo principal o un hilo definido por el usuario. Se recomienda ajus-
tar la prioridad utilizando las constantes de la clase Thread, que son las
siguientes:
1. Hilo.MIN_PRIORITY;
2. Hilo.NORM_PRIORITY;
3. Hilo.MAX_PRIORITY;
A continuación se muestra un programa para comprender la prioridad
del hilo.
Producción
Constructores más utilizados en la clase Thread
La clase Thread incluye constructores y métodos para crear y operar en
subprocesos. Thread extiende Object e implementa la interfaz
Runnable.
Hilo()
El constructor Thread() predeterminado se utiliza para crear una nueva
clase Thread.
Producción
Hilo (Cadena str)
Se crea un objeto de hilo y se le proporciona un nombre.
Producción
Hilo (Ejecutable r)
En este tipo de constructor, se pasa una referencia Runnable y se crea
un nuevo objeto Thread.
Producción
Hilo (Ejecutable r, Cadena r)
Podemos usar este constructor para generar un nuevo objeto Thread pa-
sando una referencia Runnable como primer parámetro y también pro-
porcionando un nombre para el hilo recién generado.
Producción
¡Domine los conceptos básicos de Java 8, Java Servlet y más!
Capacitación para la certificación JavaINSCRÍBETE AHORA
Multiprocesamiento en Java
En Java, el multithreading es el método de ejecutar dos o más subproce-
sos al mismo tiempo para maximizar el uso de la CPU. Por ello, en Java,
se lo suele denominar concurrencia. Cada subproceso se ejecuta en pa-
ralelo con los demás. Como varios subprocesos no asignan diferentes
áreas de memoria, conservan memoria. Además, cambiar entre subpro-
cesos lleva menos tiempo.
En Java, el uso de múltiples subprocesos mejora la estructura del progra-
ma al hacerlo más simple y fácil de navegar. Estos subprocesos generali-
zados se pueden utilizar en aplicaciones multimedia con muchos servi-
dores para cambiar o mejorar fácilmente la configuración de estas es-
tructuras complejas.
A continuación se muestra un ejemplo de multiproceso en Java.
Producción
Cómo manejar un bloqueo de subprocesos
Un interbloqueo es una situación en la que dos o más subprocesos se
quedan atascados esperando el uno al otro indefinidamente. Cuando va-
rios subprocesos necesitan los mismos bloqueos pero los reciben en ór-
denes diferentes, se produce un interbloqueo. En un programa multipro-
ceso de Java, puede producirse una condición de interbloqueo porque la
palabra clave sincronizada hace que el subproceso en ejecución se blo-
quee mientras espera el bloqueo asociado con el objeto especificado.
Para evitar un bloqueo, asegúrese de que, cuando obtenga varios blo-
queos, siempre los adquiera en el mismo orden en todos los subproce-
sos. A continuación, se muestra un ejemplo de código que puede gene-
rar un bloqueo.
Producción
Este código probablemente genere un bloqueo para los dos subprocesos
generados. El bloqueo de los objetos caller1 y caller2 ya pertenece a los
respectivos subprocesos, lo que obliga a los subprocesos a esperar a
que el otro desbloquee dichos bloqueos. Esto activaría un bloqueo y evi-
taría que se llamara a la función callMe().
Prepárese para el trabajo y obtenga asistencia laboral completa al optar por la
opción profesional más atractiva de la década. ¡Consiga el trabajo de sus
sueños en poco tiempo al inscribirse hoy mismo en nuestro Programa de
garantía de trabajo para desarrolladores de Java Full Stack !
Java es sin duda uno de los lenguajes de programación más populares y
prometedores en la actualidad. Y si quieres dominarlo, inscríbete en el
curso de formación para la certificación Java de Simplilearn . ¡Comienza
a aprender hoy mismo y deja tu huella en el mundo de la programación
hoy mismo!
Preguntas frecuentes
1) ¿Qué es un hilo en Java?
Un subproceso denota una ruta de ejecución específica dentro de un
programa. Dentro de la máquina virtual de Java, las aplicaciones pueden
mantener varios subprocesos de ejecución que funcionan simultánea-
mente. A cada subproceso individual se le asigna una prioridad, lo que
influye aún más en su orden de ejecución.
2) ¿Cuál es un ejemplo de hilo en Java?
Se puede observar un ejemplo ilustrativo de subprocesos Java emplean-
do la 'Interfaz ejecutable'.
3) ¿Qué es el subprocesamiento en Java?
Un subproceso representa una ruta de ejecución dentro de un programa.
Dentro de la máquina virtual de Java, una aplicación puede albergar nu-
merosos subprocesos de ejecución que se ejecutan simultáneamente.
Cada subproceso tiene una prioridad, y aquellos que tienen una priori-
dad más alta tienen prioridad sobre los subprocesos con una prioridad
más baja.