DelayedTask 類提供了一種延時(shí)執(zhí)行任務(wù)的功能
import java.util.concurrent.*;
public class DelayedTask {
private ExecutorService executorService;
public DelayedTask() {
executorService = Executors.newSingleThreadExecutor();
}
/**
* 延時(shí)指定時(shí)間后執(zhí)行任務(wù)
*
* @param delayTime 延時(shí)時(shí)間(毫秒)
*/
public void delay(long delayTime) {
ConnectResultTask task = new ConnectResultTask();
Future<Integer> future = executorService.submit(task);
try {
// 阻塞等待任務(wù)完成或達(dá)到指定的延時(shí)時(shí)間
future.get(delayTime, TimeUnit.MILLISECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
// 處理異常
e.printStackTrace();
}
}
/**
* 關(guān)閉延時(shí)任務(wù)
*/
public void shutdown() {
executorService.shutdown();
}
private static class ConnectResultTask implements Callable<Integer> {
@Override
public Integer call() throws Exception {
// 在這里執(zhí)行需要延時(shí)的操作
// 這里只是一個(gè)示例,可以根據(jù)實(shí)際需求進(jìn)行修改
Thread.sleep(3000);
return 0;
}
}
}
引用方式如下
public class Main {
public static void main(String[] args) {
DelayedTask task = new DelayedTask();
task.delay(5000); // 延時(shí) 5 秒
// 在延時(shí)任務(wù)執(zhí)行完成前,這里可以繼續(xù)執(zhí)行其他操作
task.shutdown(); // 關(guān)閉延時(shí)任務(wù)
}
}
DelayedTask 類提供了一種通用、靈活且易于使用的方式來(lái)實(shí)現(xiàn)延時(shí)執(zhí)行任務(wù)的功能。它相比于 Handler 的 postDelayed 方法和 Thread.sleep 方法具有更廣泛的適用性和更好的性能優(yōu)勢(shì)。
具體需要自行驗(yàn)證,這里不做保證。