正確な結果が必要な計算(CTR暗号化)があります。Java:非同期タスクから検索された結果の順序
私はこの結果を計算するマルチスレッド設計を作成しました。この場合、結果はByteBufferです。計算自体はもちろん非同期で実行されるため、結果はいつでも任意の順序で利用できるようになります。 「ユーザー」はメソッドを呼び出すことによって結果を使用する単一スレッドのアプリケーションであり、その後メソッドはByteBuffersをリソースプールに戻します。リソースの管理は既に(スレッドセーフスタックを使用して)処理されています。
質問:結果を集約し、の右注文で利用できるものが必要です。次の結果が利用できない場合は、ユーザーが呼び出すメソッドがブロックされるまでブロックする必要があります。誰かが順調に計算結果を非同期的に返すことができるjava.util.concurrentの良い戦略やクラスを知っていますか?
解決策はスレッドセーフでなければなりません。私はサードパーティ製のライブラリであるThread.sleep()/ Thread.wait()と、synchronized以外の関連キーワードを避けたいと思います。さらに、タスクは、例えば、それが必要な場合は、正しい順序でエグゼキュータを実行します。これは研究用ですので、Java 1.6または1.7のコンストラクトを自由に使用してください。
注:私はJREで定義されたクラスと[暗号化]の中で誰かがすでに対処していたかもしれないので、これらの質問[jre]にタグを付けましたが、質問自体は純粋にjava &マルチスレッド。
なぜByteBuffer配列を作成し、Bytebufferをスレッドに渡すのはなぜですか?すべてのスレッドが完了したら、ByteBuffersを配列順に書き込みます。 – fge
暗号化とは関係がないため、「暗号化」タグを削除しました。 –