Yes, thread1 and thread2 get reader locks, thread1 also gets an exclusive lock on the 'sync' and thread2 is blocked on the call to 'sync'. thread1 attempts to upgrade to a writer lock, but is blocked because thread2 is holding a readerlock, which in turn is blocked because it is waiting for the sync to be released.