Classe Conta e Thread

Boa tarde,

Estudando programação java, estou com o problema que classe não está retornando o valores corretos e gostaria de saber se o método transfere está correto?

[code]/*

  • classe Conta

  • Esta classe é responsável por sacar, depositar e tranferir valor
    */
    class Conta
    {
    private double saldo; // atributo saldo
    private double limite = 50; // atributo limite, valor inicial 50
    private double saldoAnterior;

    public Conta(double saldo)
    {
    this.saldo = saldo;
    }

    /*

    • método saca()
    • @param quantidade = quantidade a cacar
      */
      public synchronized void saca(double quantidade)
      {
      if((this.saldo + this.limite) > quantidade)
      {
      try
      {
      Thread.sleep((int)(Math.random()*300));
      }catch (InterruptedException e)
      {
      e.printStackTrace();
      }
      saldoAnterior = this.saldo;
      this.saldo -= quantidade;
      System.out.println(Thread.currentThread().getName()+"\tSaldo Anterior: R$"+ saldoAnterior +
      "\tSacou: "+ quantidade +
      "\tSaldo: "+ this.saldo);
      }
      }

    /*

    • método deposita()

    • @param quantidade = quantidade a depositar
      */
      public synchronized void deposita(double quantidade)
      {

      try
      {
      Thread.sleep((int)(Math.random()*300));
      }catch (InterruptedException e)
      {
      e.printStackTrace();
      }
      saldoAnterior = this.saldo;
      this.saldo += quantidade;
      System.out.println(Thread.currentThread().getName()+"\tSaldo Anterior:"+ saldoAnterior +
      "\tDepositou: "+ quantidade +
      "\tSaldo: "+ this.saldo);
      }

    /*

    • método transfere()
    • @param destino = conta que receberá a quantia
    • @param quantidade = quantidade da transferencia
      */
      public synchronized void transferePara(Conta destino, double quantidade)
      {
      try
      {
      Thread.sleep((int)(Math.random()*300));
      }catch (InterruptedException e)
      {
      e.printStackTrace();
      }
      saldoAnterior = this.saldo;
      this.saldo -= quantidade;
      destino.saldo += quantidade;
      System.out.println(Thread.currentThread().getName()+"\tSaldo Anterior:"+ saldoAnterior +
      "\tTransferiu: "+ quantidade +
      "\tSaldo: "+ this.saldo);
      }
      }

/*

  • classe Cliente
    */
    class Cliente extends Thread
    {
    private Conta conta;

    /*

    • construtor da classe Cliente
      */
      public Cliente(String name, Conta conta)
      {
      super(name);
      this.conta = conta;
      }

    public void run()
    {
    for (int operacao = 10; operacao >= 0; operacao–)
    {
    if (operacao <= 3)
    conta.saca(2);
    else if(operacao > 3 && operacao <=6)
    conta.deposita(10);
    else if(operacao > 6 && operacao <= 10)
    conta.transferePara(conta, 50);
    }
    }
    }

public class Programa {
public static void main(String[] args)
{
Conta conta = new Conta(100);
Conta conta2 = new Conta(100);

	Cliente joao = new Cliente("Joao", conta);

	Cliente maria = new Cliente("Maria", conta2);

	joao.start();
	maria.start();
}

}[/code]
Agradeço desde já,
Júnio César Silva

Que valores tu queria/deveria ser retornado?

Porque executei o programa aqui e ele rodou bem, mas com relação a saída correta, você precisaria esclarecer melhor.

O método transfere está aguardando um pequeno perído de tempo e então efetuando as operações que tu mandou fazer e em seguida imprime uma String.
Como ele deveria se comportar?

Muito obrigado pela atenção Fernandoeick.
Quando faço a tranferencia, não me mostra o saldo atualizado.

Agradeço desde já,
Júnio