o meu código as vezes funciona e da o resultado certo outro não, oque ta errado
class Conta {
private float saldo, valor;
public Conta() {
}
public Conta(float inicial)
{
saldo = inicial;
}
public float saldo() {
return saldo;
}
public synchronized void deposita(float valor) {
saldo = saldo + valor;
}
public synchronized void retira(float valor) {
saldo = saldo - valor;
}
}
class ThreadDeposita extends Thread {
private Conta c;
ThreadDeposita(Conta c) {
this.c = c;
}
public void run() {
for (int i = 0; i < 10; i++) // faz 10 depositos de 100
c.deposita(100);
}
}
class ThreadRetira extends Thread {
private Conta c;
ThreadRetira(Conta c) {
this.c = c;
}
public void run() {
for (int i = 0; i < 5; i++) // faz 5 retiradas de 50
c.retira(50);
}
}
class OperacoesBancarias {
public static void main(String[] args) {
Conta c = new Conta();
ThreadDeposita td = new ThreadDeposita(c);
ThreadRetira tr = new ThreadRetira(c);
td.start();
tr.start();
System.out.println("Saldo da conta: " + c.saldo());
}
}