logo

Subprocesos múltiples en Java

  1. subprocesos múltiples
  2. Multitarea
  3. Multitarea basada en procesos
  4. Multitarea basada en subprocesos
  5. ¿Qué es el hilo?

subprocesos múltiples en Java Es un proceso de ejecución de múltiples subprocesos simultáneamente.

Un hilo es un subproceso liviano, la unidad de procesamiento más pequeña. El multiprocesamiento y el multiproceso se utilizan para lograr la multitarea.

fmoviez

Sin embargo, utilizamos subprocesos múltiples en lugar de multiprocesamiento porque los subprocesos usan un área de memoria compartida. No asignan un área de memoria separada, por lo que ahorran memoria y el cambio de contexto entre subprocesos lleva menos tiempo que el proceso.

Java Multithreading se utiliza principalmente en juegos, animaciones, etc.


Ventajas del subproceso múltiple de Java

1) eso no bloquea al usuario porque los subprocesos son independientes y puedes realizar múltiples operaciones al mismo tiempo.

2) tu Puede realizar muchas operaciones juntas, por lo que ahorra tiempo. .

3) Los hilos son independiente , por lo que no afecta a otros subprocesos si se produce una excepción en un solo subproceso.


Multitarea

La multitarea es un proceso de ejecución de múltiples tareas simultáneamente. Usamos multitarea para utilizar la CPU. La multitarea se puede lograr de dos maneras:

  • Multitarea basada en procesos (Multiprocesamiento)
  • Multitarea basada en subprocesos (Multithreading)

1) Multitarea basada en procesos (Multiprocesamiento)

  • Cada proceso tiene una dirección en la memoria. En otras palabras, cada proceso asigna un área de memoria separada.
  • Un proceso es pesado.
  • El costo de la comunicación entre los procesos es alto.
  • Cambiar de un proceso a otro requiere algo de tiempo para guardar y cargar registros , mapas de memoria, listas de actualización, etc.

2) Multitarea basada en subprocesos (Multithreading)

  • Los hilos comparten el mismo espacio de direcciones.
  • Un hilo es liviano.
  • El costo de la comunicación entre hilos es bajo.

Nota: Se requiere al menos un proceso para cada hilo.

¿Qué es el hilo en Java?

Un hilo es un subproceso liviano, la unidad de procesamiento más pequeña. Es un camino de ejecución separado.

Los hilos son independientes. Si ocurre una excepción en un hilo, no afecta a otros hilos. Utiliza un área de memoria compartida.

Subprocesos múltiples de Java

Como se muestra en la figura anterior, se ejecuta un hilo dentro del proceso. Hay cambio de contexto entre los hilos. Puede haber múltiples procesos dentro del sistema operativo y un proceso puede tener múltiples subprocesos.

Nota: A la vez solo se ejecuta un hilo.

Clase de subproceso Java

Java proporciona Clase de hilo para lograr la programación de subprocesos. La clase de hilo proporciona constructores y métodos para crear y realizar operaciones en un hilo. La clase de hilo se extiende Clase de objeto e implementa la interfaz Runnable.

Métodos de subprocesos de Java

SN Modificador y tipo Método Descripción
1) vacío comenzar() Se utiliza para iniciar la ejecución del hilo.
2) vacío correr() Se utiliza para realizar una acción para un hilo.
3) hoyo estatico dormir() Duerme un hilo durante el período de tiempo especificado.
4) Hilo estático hilo actual() Devuelve una referencia al objeto de hilo que se está ejecutando actualmente.
5) vacío unirse() Espera a que muera un hilo.
6) En t obtenerPrioridad() Devuelve la prioridad del hilo.
7) vacío fijar prioridad() Cambia la prioridad del hilo.
8) Cadena obtenerNombre() Devuelve el nombre del hilo.
9) vacío escoger un nombre() Cambia el nombre del hilo.
10) largo obtenerId() Devuelve la identificación del hilo.
11) booleano está vivo() Prueba si el hilo está vivo.
12) hoyo estatico producir() Hace que el objeto de subproceso que se está ejecutando actualmente se detenga y permita que otros subprocesos se ejecuten temporalmente.
13) vacío suspender() Se utiliza para suspender el hilo.
14) vacío reanudar() Se utiliza para reanudar el hilo suspendido.
15) vacío detener() Se utiliza para detener el hilo.
16) vacío destruir() Se utiliza para destruir el grupo de subprocesos y todos sus subgrupos.
17) booleano es demonio() Prueba si el hilo es un hilo de demonio.
18) vacío establecerDaemon() Marca el hilo como demonio o hilo de usuario.
19) vacío interrumpir() Interrumpe el hilo.
20) booleano está interrumpido() Prueba si el hilo ha sido interrumpido.
21) booleano estático interrumpido() Prueba si el hilo actual ha sido interrumpido.
22) entero estático cuentaactiva() Devuelve el número de subprocesos activos en el grupo de subprocesos del subproceso actual.
23) vacío comprobar acceso() Determina si el hilo que se está ejecutando actualmente tiene permiso para modificarlo.
24) booleano estático mantenerBloqueo() Devuelve verdadero si y sólo si el hilo actual mantiene el bloqueo del monitor en el objeto especificado.
25) hoyo estatico pila de volcado() Se utiliza para imprimir un seguimiento de la pila del hilo actual en el flujo de error estándar.
26) Elemento de seguimiento de pila[] obtenerStackTrace() Devuelve una matriz de elementos de seguimiento de la pila que representan el volcado de la pila del subproceso.
27) entero estático enumerar() Se utiliza para copiar el grupo de subprocesos de cada hilo activo y su subgrupo en la matriz especificada.
28) Hilo.Estado obtenerEstado() Se utiliza para devolver el estado del hilo.
29) Grupo de subprocesos obtener grupo de hilos() Se utiliza para devolver el grupo de hilos al que pertenece este hilo.
30) Cadena Encadenar() Se utiliza para devolver una representación de cadena de este hilo, incluido el nombre, la prioridad y el grupo de hilos del hilo.
31) vacío notificar() Se utiliza para dar la notificación para un solo hilo que está esperando un objeto en particular.
32) vacío notificar a todos() Se utiliza para notificar a todos los hilos en espera de un objeto en particular.
33) vacío setContextClassLoader() Establece el contexto ClassLoader para el hilo.
34) Cargador de clases getContextClassLoader() Devuelve el ClassLoader de contexto para el hilo.
35) Hilo estático.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler() Devuelve el controlador predeterminado invocado cuando un hilo termina abruptamente debido a una excepción no detectada.
36) hoyo estatico setDefaultUncaughtExceptionHandler() Establece el controlador predeterminado que se invoca cuando un subproceso finaliza abruptamente debido a una excepción no detectada.
Sabes
  • ¿Cómo realizar dos tareas mediante dos subprocesos?
  • ¿Cómo realizar subprocesos múltiples por clase anónima?
  • ¿Qué es el Programador de subprocesos y cuál es la diferencia entre programación preventiva y división de tiempo?
  • ¿Qué pasa si iniciamos un hilo dos veces?
  • ¿Qué sucede si llamamos al método run() en lugar del método start()?
  • ¿Cuál es el propósito del método de unión?
  • ¿Por qué JVM finaliza el subproceso del demonio si no quedan subprocesos de usuario?
  • ¿Qué es el gancho de apagado?
  • ¿Qué es la recolección de basura?
  • ¿Cuál es el propósito del método finalize()?
  • ¿Qué significa el método gc()?
  • ¿Qué es la sincronización y por qué utilizarla?
  • ¿Cuál es la diferencia entre método sincronizado y bloque sincronizado?
  • ¿Cuáles son las dos formas de realizar la sincronización estática?
  • ¿Qué es un punto muerto y cuándo puede ocurrir?
  • ¿Qué es la comunicación o cooperación entre hilos?
¿Qué aprenderemos en Multithreading?
  • subprocesos múltiples
  • Ciclo de vida de un hilo
  • Dos formas de crear un hilo
  • Cómo realizar múltiples tareas mediante múltiples subprocesos
  • Programador de hilos
  • durmiendo un hilo
  • ¿Podemos iniciar un hilo dos veces?
  • ¿Qué sucede si llamamos al método run() en lugar del método start()?
  • Unirse a un hilo
  • Nombrar un hilo
  • Prioridad de un hilo
  • Hilo demoníaco
  • ApagarGancho
  • Recolección de basura
  • Sincronización con método sincronizado.
  • Bloque sincronizado
  • Sincronización estática
  • Punto muerto
  • Comunicación entre hilos