package com.app.mvc.test;
import com.app.mvc.http.HttpClients;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
/**
* Created by jimin on 16/3/23.
*/
@Slf4j
public class TestAsyncTimeout {
public static void main(String[] args) {
ExecutorService poll = Executors.newFixedThreadPool(100);
Future<Boolean> future = poll.submit(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
Thread.sleep(1000 * 10);
System.out.println("任务执行完成");
return true;
}
});
try {
future.get(3, TimeUnit.SECONDS);
} catch (InterruptedException e) {
log.error("InterruptedException", e); //get为一个等待过程,异常中止get会抛出异常
} catch (ExecutionException e) {
log.error("ExecutionException", e); //submit计算出现异常
} catch (TimeoutException e) {
log.error("TimeoutException", e); //超时异常
future.cancel(true); //超时后取消任务
} finally {
poll.shutdown();
}
try {
HttpClients.asyncClient(1, 1).asyncGet("https://www.baidu.com");
} catch (Exception e) {
log.error("xxx", e);
}
}
}