HovercraftFullOfEels の提案を拡張して、カスタム(この場合はComponent
おそらく a ) を作成します。JLabel
ダウンロード要求を実行する in eachを使用し、javax.swing.Timer
5 秒ごとに繰り返すように設定します。ここでの問題は次のとおりです。
- 多くの画像があり、各コンポーネントが個別のダウンロードを要求している場合、システム リソースが枯渇する可能性があります。
- 各イメージのダウンにかかる時間は、5 秒より長くかかる場合があります。その場合、あなたはどうしますか?
もう 1 つのアプローチは、ダウンロード要求の処理を担当する集中キューを用意することです。これは自動化 (つまり、ユーザーを登録Component
し、いつ更新するかを決定する) することも、必要に応じて要求を追加することもできます。
自動化モデルでは、リソース管理をより細かく制御できます。
この場合、 ScheduledExecutorServiceのようなものを使用してダウンロード タスクを管理したくなるでしょう。基本的な考え方は、将来の特定の時間 (5 秒) にダウンロード タスクが実行され、イメージがダウンロードされて に適用Component
され、新しいダウンロード リクエストが に登録されるというものです。ScheduledExecutorService
このアプローチにより、システムによって作成されたスレッドの数を制御したり、リクエスト間の時間を変更したりできます。
ばかげたモデルでは、javax.swing.Timer
& の組み合わせを使用する可能性があります。タイマーは各 に関連付けられ、起動すると、新しい要求がダム キューに置かれます。ダム キューは、将来のある時点でイメージをダウンロードし、.Component
Component
これに関する主な問題は、前の要求が完了する前に、コンポーネントが新しいイメージを要求する可能性があることです。これらの状態をトラップするために使用できる手法はありますが、スマート キューのアイデアを使用する方が簡単で簡単です。
これらのアイデアはすべて Java の機能を利用しています。この場合、イベント ディスパッチ スレッドとSwing で同時実行を処理する方法をThread
理解することが非常に重要です。