More that can go wrong
What happens if you have two things
that do this - deadlock
public void doSomething() {
Synchronized (a) {
  Synchronized (b) {
  // code
  } }
}
public void doOther() {
Synchronized (b) {
  Synchronized (a) {
  // code
  } }
}