2

1つのバックグラウンドタスクを2つのスレッドに分割することにしました。したがって、ScheduledExecutorService2つのワーカースレッドを管理し、3秒ごとに定期的に実行するがあります。次の2つのタスクを実装します。

  1. サーバーからデータを取得する
  2. このデータによるいくつかの操作

したがって、最初のスレッドがサーバーから大量のデータを取得した後、それを変換する2番目のワーカースレッドに渡します。

しかし、これはある種のアンチパターンだと思います。そうするからです。一方のスレッドはもう一方のスレッドに依存し、マルチスレッドアプリの設計の観点からは良くありません。私は正しいかいいえか、そしてこの解決策は悪くありませんか?特に設計の一般的な観点からの説明をいただければ幸いです。

4

2 に答える 2

3

これは、データ取得スレッドを a 、データ操作スレッドをコンシューマーとproducer/consumer見なすことができる典型的な例です。したがって、デザインに問題はありません。producer

主に からへconcurrent.BlockingQueueスレッド間でメッセージを渡すために実装する適切なクラスを使用できます。producerconsumer

于 2013-02-20T18:05:12.337 に答える