Bloqueio de Objeto com o Synchronized

Estou com dúvidas de qual obejto é bloqueado quando declaramos um método como synchronized.

package testKiller7;

public class ContaCorrente {
	private int saldo = 50;

	public int getSaldo() {
		return saldo;
	}

	public void retirar(int valor) {
		saldo = saldo - valor;
	}
}
package testKiller7;

public class AccountDanger implements Runnable {
	private ContaCorrente conta = new ContaCorrente();

	public static void main(String[] args) {
		AccountDanger r = new AccountDanger();
		Thread one = new Thread(r);
		Thread two = new Thread(r);
		one.setName("Fred");
		two.setName("Lucy");
		one.start();
		two.start();
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		for (int x = 0; x <= 5; x++) {
			efetuarRetirada(10);
			if (conta.getSaldo() < 0) {
				System.out.println("Limite excedido");
			}
		}
	}

	private synchronized void efetuarRetirada(int valor) {
		if (conta.getSaldo() >= valor) {
			System.out.println(Thread.currentThread().getName()
					+ " iniciando retirada");
			// após iniciar a retirada, a Tread espera 500 milisegundos antes de
			// efetuar a retirada
			try {
				Thread.sleep(500);
			} catch (InterruptedException ex) {
			}
			conta.retirar(valor);
			System.out.println(Thread.currentThread().getName()
					+ " efetuou a retirada com sucesso" + "Saldo Atual: "
					+ conta.getSaldo());
		} else {
			System.out.println("Saldo insuficiente para "
					+ Thread.currentThread().getName()
					+ " retirar. Saldo atual: " + conta.getSaldo());
		}
	}
}

Qual obejto está sendo bloqueado quando chamo o método sincronizado ?
O objeto AccountDanger ?

     private synchronized void efetuarRetirada(int valor) {  
       ...
     }

equivale a:

     private void efetuarRetirada(int valor) {  
       synchronized (this) { 
          ...
       }
     }

e

     private static synchronized void efetuarRetirada(int valor) {  
       ...
     }

equivale a

     private static void efetuarRetirada(int valor) {  
       synchronized (AccountDanger.class) { 
          ...
       }
     }

Então neste caso o objeto bloqueado é mesmo o Account Danger.

[quote=thingol] private synchronized void efetuarRetirada(int valor) { ... }
equivale a:

     private void efetuarRetirada(int valor) {  
       synchronized (this) { 
          ...
       }
     }

e

     private static synchronized void efetuarRetirada(int valor) {  
       ...
     }

equivale a

     private static void efetuarRetirada(int valor) {  
       synchronized (AccountDanger.class) { 
          ...
       }
     }

[/quote]