Si un proceso de Java se bloquea (debido a un error en JNI (enfrenta un punto muerto), ¿puede provocar el bloqueo de toda la JVM? Es decir, ¿se bloquean todos los procesos y subprocesos?

0
Aravind 18 ene. 2018 a las 15:27

3 respuestas

La mejor respuesta

debido a un error en JNI . Si llama al código nativo, un error puede derribar fácilmente toda la JVM (o bloquear todo).

2
Elliott Frisch 18 ene. 2018 a las 12:34

No. El hilo o hilos en punto muerto permanecerán bloqueados, pero otros hilos pueden ejecutarse independientemente en otros programas o incluso en el mismo programa. Obviamente, se deben evitar los interbloqueos siempre que sea posible, pero los subprocesos afectados solo serán los subprocesos en punto muerto y todos los subprocesos que esperan la finalización de esos subprocesos.

0
Neil 18 ene. 2018 a las 12:31

Normalmente, cada aplicación tiene su propia instancia de JVM ejecutándose. Por lo tanto, no podría bloquear otras aplicaciones intentando bloquear su JVM actual. Sin embargo, algunas aplicaciones comparten una JVM como un servidor web, por ejemplo.

Otro escenario sería si se bloquea algo en un nivel de sistema operativo. Bueno, entonces todo lo relacionado con eso se cerrará.

0
Murat Karagöz 18 ene. 2018 a las 12:32