スレッドがなければ、while ループで実行できます。
long start = System.currentTimeMillis();
long current = start;
long threeSecondsAsMillis = 3 * 1000;
long oneSecondsAsMillis = 1000;
while (current < start + threeSecondsAsMillis) {
Thread.sleep(oneSecondsAsMillis);
current += oneSecondsAsMillis;
}
// continue your work
UI をブロックするため、これは悪い解決策であることに注意してください。より良い解決策は、Eclipse ジョブを使用することです。
Job job = new Job("") {
@Override
protected IStatus run(IProgressMonitor monitor) {
// note, that you are not in the UI-Thread anymore, but you must enable icon in the UI-Thread:
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
// enable icon
}
});
return Status.OK_STATUS;
}
};
job.schedule(3000);
greg-449 が指摘したように、UIJob も使用できます。
UIJob job = new UIJob("") {
@Override
public IStatus runInUIThread(IProgressMonitor monitor) {
// enable icon
return Status.OK_STATUS;
}
};
job.schedule(3000);