The difference is the granularity of the mutual exclusion. With your code above, only one thread can call Method1 at a time; multiple threads can potentially call myFunction. However, since myFunction does nothing other than enter a block synchronized on 'this', there's no practical difference. But, myFunction could potentially include other code outside of the synchronized guard which could be executed concurrently by multiple threads.