Actually in order to access a portion of code , it does not need the object for the portion of code.
'a' in this case is something like a kind of resource, in order to enter the code portion, you need the lock/ resouce , it does not actually require any specific object to enter, as long as the lock can mutually block (thread) each other. in this case, 'a' object is successfully blocking the two concurrent thread.
this is my rookie explanation. need more expert to clarify . haha..