关闭钩子中的Java 8和lambdas

时间:2016-06-08 08:00:33

标签: java lambda java-8

Sonar提到,这个java代码应该和lambda一起使用,但是我从来没有使用过lamdas,也不知道如何使用它。有人能指出我这个代码的正确版本:?

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

    @Override
    public void run() {
        closeable.close();
        logger.info("Close closeable.");
        executorPool.shutdown();
        logger.info("Shutdown executorPool");
    }
}));

1 个答案:

答案 0 :(得分:12)

只需将new Runnable()替换为() ->

即可
 Runtime.getRuntime().addShutdownHook(new Thread(() -> {
    closeable.close();
    logger.info("Close closeable.");
    executorPool.shutdown();
    logger.info("Shutdown executorPool");
 }));

Runnable是一个功能接口,这意味着它只有一个抽象方法,因此它可以替换为lambda表达式,这是一种功能,可以作为参数传递