程序裏訪問webservice,但是在開發環境下訪問不到webservice的地址,webservice客戶端程序程序就堵塞挺長的時間(大約5分鐘)。在調用webservice處加上超時時間限制,超過設定的時間就往外拋出異常。
import java.util.concurrent.*;
public class Class01 {
public static void main(String[] args) {
try {
ExecutorService poll = Executors.newFixedThreadPool(1);
//<String> 表示耗時計算的返回值類型
Future<String> future = poll.submit(new Callable<String>() {
@Override //call的返回值根據上面的泛型類型而定
public String call() throws Exception { //call方法裏是耗時操作,比如webservice請求,服務端訪問不到
return "耗時操作返回結果";
}
});
//10秒超時 //future.get 可以取到耗時操作的返回值,如果耗時操作沒處理完,future.get方法會在此阻塞
String result = future.get(10, TimeUnit.SECONDS);
poll.shutdown(); //如果不shutdown,main方法執行完,程序不停止
System.out.println(result);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
}
}
}
謹慎使用 這種用法