複数のクライアント間で一貫した状態を維持するためにRMIを使用するGUIアプリケーションを作成する必要があります。
RMI呼び出しはブロックされるため、GUIスレッドとは別のスレッドに配置します。GUIスレッドとの間で情報をプッシュするために、私の最初の考えは同期バッファーを使用することでした。
しかし、Bufferで同期されたメソッドを呼び出すと、GUIがフリーズします。同期キーワードを使用しない場合、バッファはスレッドセーフではありません。
Javaドキュメントから:
同じオブジェクトで同期されたメソッドを2回呼び出して、インターリーブすることはできません。1つのスレッドがオブジェクトの同期メソッドを実行している場合、同じオブジェクトブロックの同期メソッドを呼び出す他のすべてのスレッドは、最初のスレッドがオブジェクトで完了するまで実行を一時停止します。
バッファスレッドを安全にし、GUIをフリーズさせない他の方法はありますか?