Programação Orientado à Objetos
Threads / Sinchronized
Material de apoio:
http://javafree.uol.com.br/artigo/868871/Entendendo-Threads-e-Sincronizacao.html
http://equipe.nce.ufrj.br/gabriel/arqcomp2/ThreadsemJava.pdf
http://javafree.uol.com.br/artigo/6955/Cap-9-Threads-Segmentos.html
Material muito prático para aprender a fazer Threads. Parabéns, Monteiro!
ResponderExcluirCódigo para simular uma conta conjunta compartilhada entre quatro pessoas:
ResponderExcluirpackage newpackage;
public class ContaConjunta {
private int saldo = 200;
public int getSaldo(){
return saldo;
}
public synchronized void sacar(int valor, String cliente){
if(saldo >= valor){
int saldoOriginal=saldo;
System.out.println(cliente+" vai sacar");
try {
System.out.println(cliente+" esperando");
Thread.sleep(1000);
} catch (InterruptedException ex){}
saldo -= valor;
String msg = cliente+" sacou "+valor+" [Saldo Original= "+saldoOriginal+", Saldo Final= " +saldo+"]";
System.out.println(msg);
}else{
System.out.println("Saldo insuficiente para "+cliente);
}
}
}
package newpackage;
public class Compras implements Runnable {
ContaConjunta conta = new ContaConjunta();
public static void main (String[] args){
Compras irAsCompras = new Compras();
new Thread(irAsCompras, "Mãe").start();
new Thread(irAsCompras, "Filho").start();
new Thread(irAsCompras, "Pai").start();
new Thread(irAsCompras, "Filha").start();
}
@Override
public void run() {
String cliente = Thread.currentThread().getName();
for(int i=0; i<10;i++){
conta.sacar(10,cliente);
if(conta.getSaldo()<0){
System.out.println("Estorou");
}
}
}
}
Muito boa aula, mais um aprendizado e como sempre a aula é nota 10!!!
ResponderExcluir