2016-05-04 13 views
0

私は現在、ProgressBarを表示できるようにSwingWorkerの内部でThreadPoolExecutorを使用しています。ThreadPoolを実行中に追加する

「Tasks」がThreadPoolに追加され、ThreadPoolExecutorを実行してその進行状況を監視するSwingworkerを開始します。

私の「タスク」は、実行する必要がある他の「タスク」を生成することができます。私は、新しいタスクをThreadPoolに提出し、進捗状況を追跡する方法について、私の心を包み込んでいます。

提案がありますか?

答えて

0

私は

...私はThreadPoolのに新しいタスクを提出することができる方法のまわりで私の心をラップしようとしている一部の容易なこと。ただ追加してください。

...まだ進行状況を追跡します。

少なくとも、進歩は時間の単調増加関数であると思っています。私が考えることができる唯一の方法は、あなたが最初にそれらを数える "ドライラン"を行うことができるような方法であなたの仕事を構造化することです、そして実際にを実行して、実際にタスクを実行します。

+0

プールを監視し、進行状況バーを更新するスレッドを1つ作成しないでください。他のタスクは引き続きThreadPoolに提出して正常に実行できますか? –

+0

@MinhKieu質問は細部には少し薄いですが、OPが各タスクを進捗単位にしたいと言っているように聞こえますが、必要な作業の数は事前に分かりません。コードが単に新しいタスクを発見するたびに 'progressBar.setMaximum(n)'をバンプすると、プログレスバーが後退する可能性があります。逆方向に進むと、ユーザーはプロセス全体にどれくらいの時間がかかるかを推測することができなくなり、プログレスバーを表示する目的に反することになります。 –

+0

それは正しいです。アカウントを作成する最も良い方法は何ですか?私はネットワークデバイスのスナップショットをとっています。ネットワークデバイスには、スナップショットを取る必要がある「仮想デバイス」が含まれている場合があります。スナップショットが取られるかどうか、またスナップショットがいくつあるかを事前に知ることはできません。 –

関連する問題