Kaur Manpreet wrote:
Doubt: Please advise why is it that the output PQPQ would never be part of the result.
It could be. Just because you didn't happen to see it in your
testing doesn't mean it's not possible.
My Understanding: As the run method is not synchronized, I believe that there is a possibility (maybe remote one) that Line 1 is executed by both the threads simultaneously resulting in the information that static variable id is zero.
Yes, that's correct. And, even if they don't execute it at the same time, since id is not volatile and not all access to it is synchronized, it's possible for each
thread to have its own local copy of id, and one thread not to see the other's write that sets it to 0.