- subprocesos múltiples
- Multitarea
- Multitarea basada en procesos
- Multitarea basada en subprocesos
- ¿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.
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. |
- ¿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?
- 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