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

Postagens mais visitadas deste blog

Questão Comentada - Prof Nelson Lage

Classes(abstratas e concretas), Objetos, Métodos, Construtores, Vetor de Objetos e trabalhar o conceito de interface.

10 habilidades digitais que todo professor deve ter