2017-10-02 4 views
0

複数のプロセッサクラスを使用してプロセッサステップでレコードを処理しようとしています。これらのクラスは並行して動作できます。現在、私はプロセッサクラスのIスプリングバッチマルチスレッドプロセッサ

  1. セット入力と出力行
  2. がサービス
  3. は将来のすべてのオブジェクトを取得し、最終的な出力

を集めるエグゼキュータに提出し、マルチスレッド・ステップを書かれていますtaskExecutorを追加して仕事を並行させるとすぐに、手順1で設定した入力オブジェクトが手順2で上書きされ、プロセッサが上書きされた値で呼び出されるため、問題が発生します。私は、タスクを複数のステップに並行して委譲する複合プロセッサを書くことができるかどうか検索しようとしましたが、それらは逐次的にしか動作しません。

すべての入力が非常に役に立ちます。ありがとう!

+0

**複数のプロセッサクラス**?どういう意味ですか?また、既存のコードの一部を表示する必要があります。 –

答えて

0

同時性へようこそ。安全な決定的な世界であなたを守る道を歩かないと、あなたは困ってしまいます。純粋な関数を使用すると、すべての問題を取り除くことができます。関数には副作用がないので、すべての変数は最終的なものでなければなりません。これに固執すれば、並行性の問題はありません。一般的に、Javaに同梱されているスレッドライブラリは避けてください。スレッドプールやエグゼキュータなどをリソースとして扱う必要があります。おそらく、並行性、ロック、揮発性変数、なぜこれらの低レベルのコンストラクトを使用するのが難しいのかを少し読んで、約束、先物、アクターなどの高次構造を見てください。