I also noticed one thing, the synchronized block has no wait statement or notify statement, so the first thread that is executed
by JVM, gets the lock and executes infinitely. The values being printed are of course always greater than the preceding lines.
This means that even if I remove the second
new Thread(tc).start() statement, the question and the answer still hold !