https://medium.com/@jayram_manale/cracking-multithreading-interview-questions-in-java-part-1-your-ultimate-guide-to-concurrency-21c2daca89bf