私は、いくつかの計算を行い、ファイル File.txt に書き込む別のアプリケーション B を呼び出すアプリケーション A を持っています。A は複数のスレッドを介して B の複数のインスタンスを呼び出し、各インスタンスは同じファイル File.txt に書き込もうとします。複数のスレッドが同じファイルにアクセスしようとすると、ファイルアクセスがスローされますが、これは一般的です。
シングルトン クラスでコンカレント キューを使用するアプローチを試みたところ、B の各インスタンスがキューに追加され、このクラスの別のスレッドがキューから項目をデキューし、ファイル File.txt に書き込みます。キューは同期的にフェッチされ、書き込み操作は成功しました。これは正常に動作します。
キューにスレッドとアイテムが多すぎると、ファイルの書き込みは機能しますが、何らかの理由でキューがクラッシュしたり突然停止したりすると、ファイルに書き込まれるはずのすべての情報が失われます。
キューを使用せずに B からファイルを同期的に書き込むと、ファイルのロックをチェックする必要があるため遅くなりますが、B がすぐにファイルに書き込んだ後はデータが失われる可能性が低くなります。
このシナリオを処理するための最良のアプローチまたは設計は何ですか? ファイル書き込み完了後のレスポンスは不要です。ファイルの書き込みが完了するまで B を待たせることはできません。
非同期待機ファイルの書き込みはここで役に立ちますか?