我在类级别有ExecutorService。
有一个休息点'url'。因此,用户每天都会调用此API的次数。
如果我定义类级别,如何关闭执行程序服务?
CLASS LEVEL :(不确定如何关闭执行程序服务)
public class A {
private final ExecutorService executorService = Executors.newFixedThreadPool(3);
@GET("/url")
public void executeParallelTask() {
try {
executorService.submit(new Runnable() {
@Override
public void run() {
}
});
}
finally {
executorService.shutdown();
executorService.awaitTermination(12,TIMEUNIT.HOURS)
}
如果我在finally块中关闭执行器服务,当下一个请求到达休息点时,我的线程池大小为空,无法处理请求。
我知道方法级别如下。
public void executeParallelTask() {
executorService.submit(new Runnable() {
@Override
public void run() {
}
});
executorService.shutdown();
executorService.awaitTermination(12, TimeUnit.HOURS)
答案 0 :(得分:0)
您可以在关机挂钩中执行此操作。
static {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
try {
if (executorService.isShutdown()) {
return;
}
log.debug("executorService shutting down...");
executorService.shutdown();
executorService.awaitTermination(10, TimeUnit.SECONDS);
executorService.shutdownNow();
log.debug("executorService shutdown");
} catch (Throwable e) {
log.error(e, e);
}
}
});
}