1. 程式人生 > >利用FutureTask進行超時設定方法

利用FutureTask進行超時設定方法

public class Test {   public static void main(String[] args) { ExecutorService executor = Executors.newSingleThreadExecutor(); FutureTask future = new FutureTask(new Callable() {   public URLConnection call() throws Exception { // TODO Auto-generated method stub //真正的任務在這裡執行,這裡返回型別為string,可以為任意型別的資料 URL realUrl = new URL("http://www.baidu.com"); //開啟和url之間的連結 URLConnection connection = realUrl.openConnection(); connection.connect(); return connection; } }); executor.execute(future); try{ URLConnection result = future.get(5000, TimeUnit.MILLISECONDS); System.out.println(result.getURL()); }catch(InterruptedException  e){ future.cancel(true);    //取消任務 System.out.print("提前中斷"); }catch(ExecutionException  e){ future.cancel(true);    //取消任務 System.out.print("任務奔潰"); }catch (TimeoutException  e) { // TODO: handle exception future.cancel(true);    //取消任務 System.out.print("超時異常"); }finally { executor.shutdown(); } } }