EeBlog(テクニカルブログ) :Javaワンポイント

第61回 割り込み

今回のテーマは前回に引き続き「割り込み」です。

前回はスレッドに対して割り込みを行うのに、そのスレッドのinterruptメソッドを実行することについて書きました。
今回はExecutorを使用して起動したスレッドに対して割り込みを行うことを考えてみます。

Executorを使用した場合、Threadインスタンスは表には出てきません。
タスクを取り消すには、非同期処理の結果を表すFutureのcancel メソッドを実行します。
タスクを実行しているスレッドに割り込むかどうかは、引数で指定します。
(さらに…)

第60回 割り込み

今回のテーマは「割り込み」です。

前回は、Swingアプリケーションで時間のかかる処理はバックグラウンドスレッドで実行することについて書きました。
ですが、あまりにも時間のかかる処理は、途中でキャンセルしたい場合があるでしょう。
今回は、そのために、そのスレッドに対して割り込みを行うことを考えてみます。
(さらに…)

第59回 Swingのスレッドポリシー

今回のテーマは前回に引き続き「Swingのスレッドポリシー」です。

Swingのスレッドポリシーには、イベントディスパッチスレッドでは時間のかかるタスクを実行しない、とあります。 イベントディスパッチスレッド上で処理が実行中は、他のイベントは受け付けません。 したがって、時間のかかる処理をイベントディスパッチスレッド上で実行すると、その処理中はユーザーは操作ができなくなってしまいます。 そのような時間のかかる処理はバックグラウンドスレッドで行うべきです。 バックグラウンドスレッドはイベントディスパッチスレッドではないので、処理の完了後にSwingコンポーネントにアクセスする必要がある場合は、イベントディスパッチスレッド上でアクセスすべきなので注意が必要です。
(さらに…)