Pre-JDK8
private BoneCPDataSource addShutdownHook(final BoneCPDataSource pool) { Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { @Override public void run() { pool.close(); } })); return pool; }
As a Lambda
private BoneCPDataSource addShutdownHook(final BoneCPDataSource pool) { Runtime.getRuntime().addShutdownHook(new Thread(() -> { pool.close(); })); return pool; }
To method reference
private BoneCPDataSource addShutdownHook(final BoneCPDataSource pool) { Runtime.getRuntime().addShutdownHook(new Thread(pool::close)); return pool; }
That's one line per step: Perform a pool-close on shutdown, return the pool argument back to caller. Nice.