2011-01-25 9 views
1

私はGUIといくつかのボタンで構成された小さなアプリケーションを書いています。ユーザーがそれらの1つをクリックすると、プログラムはウェブページをダウンロードし、いくつかのマッチングを行い、guiに値を返す必要があります。 問題は、ユーザーがそのボタンをクリックするたびに新しいスレッドを開始するか、小さなタスク(主にWebからコンテンツをダウンロードする)のためのスレッドの代替手段があるかどうかです。GUIをフリーズせずに小さなタスクのためのスレッドの代わりに

+0

ボタンを押すたびに別のスレッドが必要ですか、キューを持つスレッドを使用してこれらのイベントをすべて管理できますか? –

答えて

3

常に別のスレッドを使用する必要があります。今、これらの異なるスレッドをどのように使用するかは、あなた次第です。 producer/consumerメソッドを見てください。バックグラウンドに待機しているスレッドだけが待ち行列に入れられます。これはあなたの仕事によく合うようです。可能であれば、SwingWorkerも使用する必要があります。これは、多くのGUIの更新と更新に役立つからです。最後に、java.concurrencyパッケージを見ると、非常に便利です。今では、あなたのためにすべてのロックとスレッドを行うライブラリを使用せずに手動でスレッドを開始する理由はないと思います。

0

この呼び出しを非同期にしたい場合は、代替手段はありません。

しかし、ダウンロードが完了して処理されるまで待つことができれば、スレッドは必要ありません。

関連する問題