红月公益电竞活动中心

Java中的两种延时的方法及使用场景

2025-12-08 12:03:50 爱心商城 3727

public static void delay(long millis) {

try {

Thread.sleep(millis);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

以上方法通过调用 Thread.sleep() 阻塞线程,仅捕获 InterruptedException,无主动取消逻辑。

若在UI线程中使用此方法,会导致主界面卡死、无响应等情况。适用于非UI线程的简单休眠(如后台任务)。

public static void delayUI(final long millis) {

try {

ModalContext.run(new IRunnableWithProgress() {

public void run(IProgressMonitor monitor)

throws InvocationTargetException,

InterruptedException {

/** 需要在非UI线程中执行的代码 */

delay(millis);

ModalContext.checkCanceled(monitor);

}

}, true, new NullProgressMonitor(), Display.getCurrent());

} catch (InvocationTargetException e) {

} catch (InterruptedException e) {

}

}

以上方法通过 ModalContext.run() 将延时任务提交到非UI线程执行。因此不会阻塞UI线程,界面保持响应。试用于需要与UI交互的耗时操作(如进度条更新),保证UI流畅。