Sonar erwähnt, dass dieser Java-Code mit Lambda verwendet werden sollte, aber ich habe nie Lamdas verwendet und habe keine Ahnung, wie man es verwendet. Kann mir jemand auf die richtige Version dieses Codes hinweisen :?Java 8 und Lambdas im Shutdown Hook
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run() {
closeable.close();
logger.info("Close closeable.");
executorPool.shutdown();
logger.info("Shutdown executorPool");
}
}));
Dann lesen Sie bitte die Lambda-Tutorial: https://docs.oracle.com/javase/tutorial/java/javaOO/lambdadexpresstions.html – Tunaki
In Fall, e xecutorPool 'bezieht sich auf einen Executor-Dienst wie' ThreadPoolExecutor', der 'shutdown()' darauf in einem JVM-Shutdown-Hook aufruft, macht wenig Sinn, da 'shutdown()' nur * ein Herunterfahren des Thread-Pools einleitet, egal hat eine Chance zu vervollständigen (oder überhaupt Fortschritte machen), bevor die JVM alle Threads auf die harte Tour tötet, ist unvorhersehbar. Nicht, dass die Threads manuell beendet werden müssten, bevor die JVM sie automatisch beendet ... – Holger
Sie haben Recht. Wenn Sie einen Executor-Service verwenden, ist es sinnvoller, shutdownNow zu verwenden, aber ich verwende eine andere Klasse, und die Benennung könnte für den Leser irreführend sein. – hiaclibe