在Java中,你可以使用ExecutorService
結合Future
和Callable
來實現任務的超時控制。以下是一個簡單的示例:
import java.util.concurrent.*;
Callable
接口的任務類:class MyTask implements Callable<String> {
@Override
public String call() throws Exception {
// 模擬一個耗時任務
Thread.sleep(5000);
return "任務完成";
}
}
ExecutorService
提交任務并獲取Future
對象:public class TimeoutControl {
public static void main(String[] args) {
// 創建一個固定大小的線程池
ExecutorService executorService = Executors.newFixedThreadPool(1);
// 提交任務并獲取Future對象
Future<String> future = executorService.submit(new MyTask());
try {
// 設置超時時間
String result = future.get(3, TimeUnit.SECONDS);
System.out.println(result);
} catch (InterruptedException e) {
System.out.println("任務被中斷");
e.printStackTrace();
} catch (ExecutionException e) {
System.out.println("任務執行異常");
e.printStackTrace();
} catch (TimeoutException e) {
System.out.println("任務超時");
e.printStackTrace();
} finally {
// 關閉線程池
executorService.shutdown();
}
}
}
在這個示例中,我們創建了一個固定大小的線程池,并提交了一個實現了Callable
接口的任務。然后,我們使用future.get()
方法設置超時時間。如果在指定的時間內任務沒有完成,將拋出TimeoutException
異常。最后,我們關閉線程池。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。