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"); } } } }
Nenhum comentário:
Postar um comentário