I work eg. 2 hours, because the program doesn't finished natural way, just if I shut it down (exitcode 130) or with error message if I wrote in the console 2 more strings. I think when one of the threads read the last string, and increase the atomic readStringCount variable equal to count, the other 2 threads already checked the ReaderThread::run() method's while condition, evaluated it true (so isInterrupted() false), and waiting for console to reader.readLine(), so don't reach the interrupt() line in main(). Essentially, the sub threads overtaking the main thread. Is it normal, when you multithreading?