https://medium.com/@ak123aryan/understanding-the-consumer-interface-in-java-a-practical-guide-1e5d50337eb7