私はRMIを使って分散アルゴリズムを実装しています。かなり大きなオブジェクトを送信しているので、RMIがネットワーク経由でシリアル化オブジェクトを送信するときにいくつかの精度が必要です。Java RMIを使用すると、ネットワーク経由でシリアル化されたオブジェクトが正確に送信されるのはいつですか?
次の方法でリモートクラスがあるとします。
class MyServer extends Remote {
public synchronized void foo (Bar bar) {
...
Thread.wait();
...
}
}
ここでは、2つ(またはそれ以上)のRMIクライアントがMyServer.fooメソッドを呼び出しています。 クライアント1と呼び出すと、Thread.wait()でブロックされます。次に、クライアント2はfooと呼ばれ、クライアント1はまだ同期されているfooメソッドに含まれているためブロックされます。
さて、質問です:ネットワーク上で送信クライアント2コールのバーパラメータがある場合は?一度だけクライアント2は実際にはブロックされたときにfooの方法を入力することができますか?
ボーナスに関する質問:これは、オブジェクトが送信される時刻で、RMI仕様によって強制される動作か、この実装固有の動作ですか?
このコードはコンパイルされません。あなたが何を求めているのか不明です。 – EJP