Is this a race condition problem? Each threads increment the readStringCount. Once the while loop detects that count is no longer greater than readStringCount, and exits it the sends an interrupt to the 3 threads but in the meantime they may have already entered a new loop. In my program the readStringCount ends up being greater than count in every run.