//********* // 成員內部類 class CallableThread implements Callable<String> { @Override public String Back() { //Back()這個就是執行的業務方法 try { // 假設這個是一個耗時的網絡 請求 Thread.currentThread().sleep(5000); return "執行成功!"; } catch (Exception e) { e.printStackTrace(); return "執行異常!"; } } } Callable<String> callableThread=new CallableThread(); FutureTask<String> task= new FutureTask<>(callableThread); // 開啟線程 new Thread(task).start(); Result r; try { // 如果3秒沒有返回值就 拋出異常 r = task.get(3000, TimeUnit.MILLISECONDS); } catch (Exception e) { r=null; } // 結束事件 //*********** 方式二:(這個方法可以獲取到返回值) //********* final ExecutorService exec = Executors.newSingleThreadExecutor(); Callable<String> call = new Callable<String>(){ public String call() throws Exception{ //耗時請求 Thread.currentThread().sleep(5000); return "OK"; } }; // Future是一個接口,該接口用來返回異步的結果 Future<String> future = exec.submit(call); try{ // 同步結果,並且設置超時時間 String S = future.get(1000 * 6, TimeUnit.MILLISECONDS); System.out.println(S); //這里返回結果 return S; }catch(InterruptedException e){ e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } catch (TimeoutException e) { //如果在此拋出異常,說明接口超時 e.printStackTrace(); } //執行結束后,手動關閉線程池 exec.shutdown(); } //***********