0
Sonar提到,這個java代碼應該和lambda一起使用,但我從來沒有用過lamdas,也不知道如何使用它。有人能指出我的代碼的正確版本:?Java 8和lambda在關機鉤
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run() {
closeable.close();
logger.info("Close closeable.");
executorPool.shutdown();
logger.info("Shutdown executorPool");
}
}));
然後請參閱lambda教程:https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html – Tunaki
如果「e xecutorPool'指的是像ThreadPoolExecutor這樣的執行器服務,它在JVM關閉鉤子內調用'shutdown()'並沒有太大意義,因爲'shutdown()'只有*啓動*關閉了線程池,無論它是否曾經有機會完成(或者完全取得進展),之後JVM將難以完成所有線程,這是不可預測的。並不是說需要在JVM自動結束之前手動結束線程... – Holger
你是對的。如果您使用執行器服務,使用shutdownNow會更有意義,但是我正在使用另一個類,並且這裏的命名可能會誤導讀者。 – hiaclibe