Bloquear todos los hilos en un objeto dado

Básicamente, necesito escribir un bloqueo para el proyecto actual en el que estoy trabajando para que cuando una conexión falle, todos los subprocesos que llaman a un método determinado deben bloquearse hasta que se restablezca la conexión.

¿Cómo hago esto de nuevo en Java? Ha pasado un tiempo desde que tuve que lidiar con este problema.

preguntado el 27 de julio de 12 a las 21:07

3 Respuestas

Podrías esperar en un Estado dentro del método. La condición sería algo como:

while (!conn.isConnected) condition.await()

Hay mucho más que este pseudocódigo, por supuesto.

Es posible que desee leer sobre los llamados patrón de disyuntor también. Una especie de cosa de palabras de moda, pero su objetivo es administrar los puntos de integración que pueden fallar, como su conexión a la base de datos.

Respondido el 24 de diciembre de 15 a las 02:12

¿No puedes simplemente no regresar del método hasta que se restablezca la conexión? Una implementación real dependerá de este método y de cómo se gestione esta conexión. podrías wait() en un Objeto, y cuando otro subproceso que es responsable de volver a conectar restablece la conexión, llame notify() para desbloquear el método. De esta manera, cualquier cosa que esté llamando al método se bloqueará porque el método nunca regresa cuando la conexión está caída.

Respondido 27 Jul 12, 21:07

Puede utilizar el Clase de objeto Métodos wait() y notifyAll():

public final void wait(long timeout) throws InterruptedException

Hace que el subproceso actual espere hasta que otro subproceso invoque el método de notificación () o el método de notificación () para este objeto, o hasta que haya transcurrido una cantidad de tiempo específica.

 public final void notifyAll()

Despierta todos los subprocesos que están esperando en el monitor de este objeto. Un subproceso espera en el monitor de un objeto llamando a uno de los métodos de espera.

Sin embargo, esta no es de ninguna manera la única solución abierta para usted. Hay otros mecanismos de sincronización en Java

Respondido 27 Jul 12, 22:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.