Los semáforos son seguros para subprocesos como se explica en el javadoc: Efectos de consistencia de la memoria: Acciones en un subproceso antes de llamar a un método de "liberación", como las acciones de liberación antes de que ocurran después de un método de "adquisición" exitoso, como adquirir en otro subproceso. La mayoría de las operaciones sobre los objetos en java.
¿Los semáforos impiden la carrera?
No, las operaciones de bloqueo ocurren atómicamente. Todo el área bloqueada no se ejecutará atómicamente. Y recuerde, los subprocesos comparten un espacio de direcciones común y están vinculados a un proceso.
¿Es seguro usar subprocesos?
Un objeto MessageService es efectivamente inmutable ya que su estado no puede cambiar después de su construcción. Por lo tanto, es seguro para subprocesos. Además, si MessageService fuera realmente mutable, pero varios subprocesos solo tienen acceso de solo lectura, también es seguro para subprocesos.
¿El subproceso es seguro y está sincronizado?
Thread safe significa: el método se vuelve seguro para ser accedido por múltiples hilos sin ningún problema al mismo tiempo. palabra clave sincronizada es una de las formas de lograr la 'seguridad de subprocesos'. Pero recuerde: en realidad, mientras varios subprocesos intentan acceder al método sincronizado, siguen el orden, por lo que el acceso es seguro.
¿Son justos los semáforos?
Por lo general, los semáforos utilizados para controlar el acceso a los recursos deben inicializarse como justos, para garantizar que ningún subproceso se quede sin acceso a un recurso. Cuando usassemáforos para otros tipos de control de sincronización, las ventajas de rendimiento de los pedidos no justos a menudo superan las consideraciones de equidad.