Supplier () -> x
Consumer x -> ()
BiConsumer x, y -> ()
Callable () -> x throws ex
Runnable () -> ()
Function x -> y
BiFunction x, y -> z
Predicate x -> boolean
UnaryOperator x1 -> x2
BinaryOperator x1, x2 -> x3
Lambda Expressions and Functional Interfaces: Tips and Best Practices