Todos sabemos que en Java, hay dos medios para lograr multifreshado, uno es continuar con la clase de subprocesos, y el otro es implementar la interfaz ejecutable.
1. ¿Cuáles son las diferencias entre procesos y hilos?
El proceso es una aplicación de ejecución, y el hilo es una secuencia de ejecución dentro del proceso. Un proceso puede tener múltiples hilos. El hilo también se llama proceso liviano.
2. ¿Cuántas maneras diferentes hay para crear hilos? ¿Cuál te gusta? ¿Por qué?
Hay tres formas de crear un hilo:
(1) Heredar la implementación de la clase de subprocesos (2) de la interfaz ejecutable (3) Las aplicaciones pueden usar el marco del ejecutor para crear un grupo de subprocesos para lograr la interfaz ejecutable. En el diseño de la aplicación que ha heredado otros objetos, esto requiere más herencia (y Java no admite más herencia) y solo puede lograr interfaces. Al mismo tiempo, el grupo de subprocesos también es muy eficiente y fácil de lograr y usar.
3. Explicación resumida de varios de los hilos.
Durante el proceso de ejecución, los hilos pueden estar en el siguiente estado:
Runnable: el hilo está listo para ejecutarse y no se puede ejecutar de inmediato.
Ejecución: el proceso está ejecutando el código del hilo.
Esperando: el hilo está en el estado de obstrucción, esperando un tratamiento externo.
Dormir: el hilo se ve obligado a dormir.
Bloque de E/S (bloqueado en E/S): esperando la operación de E/S.
Bloqueado en sincronización: espere el bloqueo.
Muerte: el hilo se ejecuta.
4. ¿Cuál es la diferencia entre el método de sincronización y el bloque de código sincrónico?
En el idioma Java, cada objeto tiene un bloqueo. El hilo puede usar la palabra clave sincronizada para obtener el bloqueo en el objeto. Las palabras clave sincronizadas se pueden aplicar al nivel de método (bloqueo granular grueso) o nivel de bloque de código (bloqueo de tamaño de partículas finas).
5. En el monitor (monitor), ¿cómo hace una sincronización de subprocesos? ¿Qué nivel de sincronización debe hacer el programa?
El monitor y el bloqueo se utilizan en la máquina virtual Java. El monitor monitorea un bloque de código sincrónico para garantizar que solo haya un hilo para ejecutar bloques de código sincrónicos a la vez. Cada monitor está asociado con una referencia de objeto. El hilo no permite el código de sincronización de ejecución antes de obtener el bloqueo.
6. ¿Qué es el punto muerto?
Ambos procesos están esperando que la otra parte se ejecute antes de poder continuar ejecutándose. Como resultado, ambos procesos están en una espera ilimitada.
7. ¿Cómo garantizar que los h hreads puedan acceder a los recursos de N sin conducir a cerraduras muertas?
Al usar múltiples hilos, una forma muy simple de evitar cerraduras muertas es especificar el orden de obtener cerraduras y los hilos forzados para obtener cerraduras en el orden especificado. Por lo tanto, si todos los hilos están bloqueados y liberados en el mismo orden, no habrá cerraduras muertas.