https://halilural5.medium.com/concurrency-in-action-7-real-world-java-multithreading-problems-and-their-solutions-2fa52556e69d