在Java中沒有類似JavaScript中的setTimeout函數來設置超時時間。但是可以使用ExecutorService和Future來實現類似的功能,避免超時異常。
下面是一個示例代碼:
import java.util.concurrent.*;
public class TimeoutExample {
public static void main(String[] args) {
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(() -> {
// 這里執行需要超時控制的任務
try {
Thread.sleep(5000); // 模擬一個長時間執行的任務
return "Task completed";
} catch (InterruptedException e) {
return "Task interrupted";
}
});
try {
String result = future.get(3, TimeUnit.SECONDS); // 設置超時時間為3秒
System.out.println(result);
} catch (TimeoutException e) {
future.cancel(true); // 超時時取消任務
System.out.println("Task timed out");
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
executor.shutdown();
}
}
在上面的示例中,通過ExecutorService的submit方法提交一個任務,然后使用future.get方法設置超時時間為3秒。如果任務在3秒內沒有完成,將會拋出TimeoutException異常,并取消任務執行。如果任務在超時時間內完成,則會返回結果。