0

私は完全な Java の専門家ではありませんが、プログラミングの経験はありますが、スレッドの経験はありません。現在、次のことを行うアプリケーションコードがあります。

  1. DBと接続する
  2. DB からコレクションにレコードをプルします (各レコードには、他のものに加えて「アクション コード」1 ~ 5 があります
  3. 各レコードは 1 つずつ選択され、各アクション コードに基づいて、特定のメソッド (アクション コードごとに 1 つ) がクラス EVENTHANDLER.class から呼び出されます。
  4. これらの個々のメソッドは、EVENTHANDLER.class 内の他のメソッドと、いくつかの共通機能用の他のクラスも使用/共有します。
  5. 最後に db_sequence が更新されます
  6. すべてのレコードが処理されたので終了

今、私には要件がありますが、これは今のところ少しあいまいですが、主にパフォーマンスの向上のために上記にスレッドを導入することを望んでいます。いくつかの特定のアクションコードを持ついくつかのレコードのプロセスを他のものよりも優先することに加えて. たとえば、アクション コードが -2 のレコードは、1、3、4 の順に高い優先順位である必要があります。

私の質問は、これを実装するためのアプローチを最初にどのように実行するかです。第二に、これは JAVA 1.6 で行われるため、どのクラスを使用すればよいでしょうか。また、コードごと(コード例)または上記の機能フローに基づいた方向性は非常に役立ちます。

非常に直接的な質問は、上記のアクション コード (1-5) では、アクション コードに関係なく、全体で 5 つのスレッドを同時に実行する必要がありますか、それともレコードごとに 1 つのスレッド (何百もの可能性があります) を使用する必要がありますか?

ありがとう

4

1 に答える 1

2

私があなたであるか、あなたにこれをするように頼んだ人であるかどうか心配します.

既存のアプリのパフォーマンスを示す数値はありますか? はいの場合、期待されるパフォーマンスの目標を超えていますか? 両方を手に入れるまで、スレッドに関する判断はしません。

スレッド化は、たとえ経験者であっても間違えやすい高度なトピックです。

データベース部分は単一のスレッドにできるように思えます。ハンドラーは長時間実行される可能性があるため、Executor と Java 同時実行パッケージの新しい構成要素を使用してそれらを実行します。いかなる場合でも、生のスレッドでこれを行うべきではありません。

助けが必要なように思えます。あなたよりも Java をよく知っている人に相談してみます。

于 2013-02-05T12:47:37.877 に答える