Suneel,
The exact bytecodes may differ, but how many of us are actually concerned with the code at that level? The same behavior can be accomplished with different bytecode arrangements.
Anyway, look at
JLS2 8.4.3.6 and
14.18. Sun guarantees that both of the code samples Bob presented will have the same effect.
Regarding performance, there is a small penalty associated with the <code>synchronized</code> statement vice a <code>synchronized</code> method in some circumstances in some VM's. But this penalty is tiny compared to the performance benefit you can gain by making the critical section as small as possible, because that reduces the chance that two threads will contend for the lock, and contention is where you really take a performance hit.
So when I really need to sync the entire method body, and the appropriate monitor is the method's object, I use a sync'ed method. Most of the time, however, a sync'ed statement is more appropriate and performs better.
Jerry