アクション実行時に長い時間の掛かる処理をする場合など、
そのまま処理を記述するとEclipseが固まってしまいます。
public class SampleAction {
public void run(IAction action) {
runLongTime(); // この間Eclipseが固まってしまう
}
/** 5秒間掛かる処理 */
private void runLongTime() {
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
}
}
}
これを解決するには、org.eclipse.core.runtime.jobs.Job を使います。
使い方はきわめて簡単です。
new Job("jobName") {
@Override
protected IStatus run(IProgressMonitor monitor) {
runLongTime();
return Status.OK_STATUS;
}
}.schedule();
このように、Jobの継承クラスを作成して
その中の run メソッド(abstract)を実装します。
ここで時間の掛かる処理を記述すれば、Eclipseが固まることなく処理が実行できます。

処理中はこのように右下にProgress表示がされます。