基本的に、接続が失敗したときに現在取り組んでいる現在のプロジェクトのロックを作成する必要があります。接続が再確立されるまで、特定のメソッドを呼び出すすべてのスレッドがハングする必要があります。
これを Java でもう一度行うにはどうすればよいですか? この問題に対処しなければならなくなってからしばらく経ちました。
基本的に、接続が失敗したときに現在取り組んでいる現在のプロジェクトのロックを作成する必要があります。接続が再確立されるまで、特定のメソッドを呼び出すすべてのスレッドがハングする必要があります。
これを Java でもう一度行うにはどうすればよいですか? この問題に対処しなければならなくなってからしばらく経ちました。
メソッド内で条件を待つことができます。条件は次のようになります。
while (!conn.isConnected) condition.await()
もちろん、この疑似コード以外にも多くの機能があります。
いわゆるサーキット ブレーカー パターンについても読みたいと思うかもしれません。流行語のようなものですが、目標は、データベースへの接続など、失敗する可能性のある統合ポイントを管理することです。
接続が再確立されるまで、メソッドから戻ることはできませんか? 実際の実装は、このメソッドと、この接続の管理方法によって異なります。wait()
オブジェクトで、再接続を担当する別のスレッドが接続を再確立するときに、呼び出しnotify()
てメソッドのブロックを解除することができます。この方法では、接続がダウンしているときにメソッドが返されないため、メソッドを呼び出しているものはすべてブロックされます。
Object クラスのwait() および notifyAll() メソッドを使用できます。
public final void wait(long timeout) throws InterruptedException
別のスレッドがこのオブジェクトの notify() メソッドまたは notifyAll() メソッドを呼び出すか、指定された時間が経過するまで、現在のスレッドを待機させます。
public final void notifyAll()
このオブジェクトのモニターで待機しているすべてのスレッドを起こします。スレッドは、待機メソッドの 1 つを呼び出すことによって、オブジェクトのモニターで待機します。
ただし、これが唯一の解決策ではありません。Javaには他の同期メカニズムがあります