I guess @synchronized blocks are not object dependent but thread dependent...right? In that case why do we pass self?