Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
192f8fc1-daca-4dcb-b0a6-c74c7b06db90 Thread/src/com/ayrongabriel/threads/ComprasEmFamilia.java package com.ayrongabriel.threads; public class ComprasEmFamilia implements Runnable { // Criação/Inicialização da conta conjunta não sincronizada //ContaConjuntaNaoSicronizada conta = new ContaConjuntaNaoSicronizada(); // Criação/Inicialização da conta conjunta sicronizada ContaConjuntaSicronizada conta = new ContaConjuntaSicronizada(); public static void main(String[] args) { Runnable fazerCompras = new ComprasEmFamilia(); new Thread(fazerCompras, "Pai").start(); new Thread(fazerCompras, "Mãe").start(); new Thread(fazerCompras, "Filho").start(); } @Override public void run() { // pega o nome das Threads e seta na variável cliente String cliente = Thread.currentThread().getName(); for (int i = 0; i < 5; i++) { conta.sacar(250, cliente); if(conta.getSaldo() < 0){ System.err.println("Saldo estourado!"); } } } } Thread/src/com/ayrongabriel/threads/ContaConjuntaNaoSicronizada.java package com.ayrongabriel.threads; public class ContaConjuntaNaoSicronizada { double saldo = 1000; public double getSaldo(){ return saldo; } public void sacar(double valor, String cliente){ double saldoOriginal = saldo; if(saldo >= valor){ System.out.println(cliente + " vai sacar"); try { System.out.println(cliente +" aguardando..."); Thread.sleep(3000); } catch (InterruptedException e) { System.out.println("InterruptedException"); } saldo -= valor; String msg = cliente +" SACOU " + valor + " [Saldo Inicial = " + saldoOriginal + "][Saldo final = " + saldo + "]"; System.out.println(msg); System.out.println("-----------------------------------------------------------"); }else{ System.err.println("Saldo insuficiente para " + cliente); } } } Thread/bin/com/ayrongabriel/threads/ContaConjuntaNaoSicronizada.class Thread/.project Thread org.eclipse.jdt.core.javabuilder org.eclipse.jdt.core.javanature Thread/.classpath Thread/bin/com/ayrongabriel/threads/ComprasEmFamilia.class Thread/src/com/ayrongabriel/threads/ContaConjuntaSicronizada.java package com.ayrongabriel.threads; import java.util.Random; public class ContaConjuntaSicronizada { double saldo = 1000; Random random = new Random(); public double getSaldo(){ return saldo; } public synchronized void sacar(double valor, String cliente){ double saldoOriginal = saldo; if(saldo >= valor){ System.out.println(cliente + " vai sacar"); try { System.out.println(cliente +" aguardando..."); Thread.sleep(random.nextInt(3000)); } catch (InterruptedException e) { System.out.println("InterruptedException"); } saldo -= valor; String msg = cliente +" SACOU " + valor + " [Saldo Inicial = " + saldoOriginal + "][Saldo final = " + saldo + "]"; System.out.println(msg); System.out.println("-----------------------------------------------------------"); }else{ System.err.println("Saldo insuficiente para " + cliente); } } } Thread/bin/com/ayrongabriel/threads/ContaConjuntaSicronizada.class
Compartilhar