Threads | Código Exercício | #posJava
Link da aula: https://prezi.com/2kzsdcr901gt/threads/?utm_campaign=share&utm_medium=copy
Resolução: Threads Syncronized
package br.com.estacio.threads;
public class ContaConjunta {
private int saldo = 100;
public int getSaldo() {
return saldo;
}
public synchronized void sacar(int valor, String cliente) {
if (saldo >= valor) {
int sO = saldo;
System.out.println(cliente+" vai sacar");
try {
System.out.println(cliente+" esperando...");
Thread.sleep(2000);
} catch (InterruptedException e) {
}
saldo -= valor;
String msg = cliente + " SACOU "+valor+
" [Saldo Original "+sO+
" Saldo final "+saldo+" ]";
System.out.println(msg);
} else {
System.out.println("Saldo insuficiente");
}
}
}
package br.com.estacio.threads;
public class ComprasEmFamilia implements Runnable{
ContaConjunta conta = new ContaConjunta();
public static void main (String[] args) {
ComprasEmFamilia irAsCompras = new ComprasEmFamilia();
new Thread(irAsCompras, "Pai").start();
new Thread(irAsCompras, "Mãe").start();
new Thread(irAsCompras, "Filha").start();
new Thread(irAsCompras, "Babá").start();
}
@Override
public void run() {
String cliente = Thread.currentThread().getName();
for (int i=0; i <5; i++){
conta.sacar(20,cliente);
if (conta.getSaldo() <=0) {
System.out.println("Estourou");
}
}
}
}

Comentários
Postar um comentário