[英]Java- executor service shutdown at class level field
我在班级有ExecutorService。
有一个休息点“ URL”。 因此,用户每天将调用此API的次数为“ n”次。
如果我定义了执行程序服务级别,如何关闭执行服务?
级别:(不确定如何关闭执行程序服务)
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)
您可以在关闭钩子中执行此操作。
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);
}
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.