Dúvida - Instanciar classe

3 respostas
Marques

O problema:

O casal tem uma conta conjunta e 'SIMULTANEAMENTE' a esposa vai a agência A fazer um saque de R$ 40,00 e o marido vai a agência B fazer um saque de R$ 50,00.
De acordo com a classe abaixo como garantir que a conta não ficará com saldo negativo, lembrando que o saldo da conta é de R$ 50,00?

Muito obrigado,

Marques

public class Saque {
	
	public  void queroSacar(BigDecimal valorSaque) {
		if (verificaSaldoDaConta(valorSaque)) {
			//Processa saque
		} else {
			//Exibe mensagem 'Saldo Insuficiente'
		}
	}
	
	public boolean verificaSaldoDaConta(BigDecimal valorSaque) {
		boolean podeSacar = false;		
		//Supondo que tenho 50,00 reais na caonta
		//Quando a Esposa vai saccar podeSacar retorna true
		//Quando a Marido vai saccar podeSacar retorna true
		return podeSacar;
	}
}

3 Respostas

blackout

Use a palavra chave “synchronized” no método “queroSacar()”.

public synchronized void queroSacar(BigDecimal valorSaque) {  
   if (verificaSaldoDaConta(valorSaque)) {  
   //Processa saque  
   } else {  
   //Exibe mensagem 'Saldo Insuficiente'  
   }  
}

significa que esse bloco de codigo vai estar “protegido” de acessos simultaneos.
somente um thread por vez tera acesso a esse bloco de codigo.

http://download.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html

J

De uma olhada no modificador synchronized.

Marques

Wlw!!! muito ogrigado!

Criado 27 de outubro de 2010
Ultima resposta 27 de out. de 2010
Respostas 3
Participantes 3