multithreading e javaee - qconsp.com · public double reajustacontrato(contrato contrato, double...
TRANSCRIPT
![Page 1: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/1.jpg)
Multithreading e JavaEE
QConSP '14
![Page 2: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/2.jpg)
Gilliard Cordeiro, tomador de tereré
![Page 3: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/3.jpg)
![Page 4: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/4.jpg)
Ok, agora vamos ao que interessa…
![Page 5: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/5.jpg)
Por que um sistema pode ficar lento?
![Page 6: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/6.jpg)
E como vc pensa em resolver?
![Page 7: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/7.jpg)
![Page 8: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/8.jpg)
pense melhor
![Page 9: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/9.jpg)
Pode ser bom… …pode ser Pepsi
Simples :)
![Page 10: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/10.jpg)
pouca mudança no código e muita nos
resultados
![Page 11: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/11.jpg)
com Multithreading
![Page 12: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/12.jpg)
Contrato
- cliente - saldo
Parcela
- vencimento - valor
* parcelas
![Page 13: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/13.jpg)
!! public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }!
import java.util.concurrent.Future; import javax.ejb.AsyncResult; ! @Asynchronous public Future<Double> reajustaContrato(Contrato contrato, double percent){! contrato.saldo *= (1 + percent); return new AsyncResult<Double>(contrato.saldo); }
![Page 14: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/14.jpg)
! @Asynchronous public Future<Double> reajustaContrato(Contrato contrato, double percent){! contrato.saldo *= (1 + percent) return new AsyncResult<Double>(contrato.saldo); }!
@EJB ContratoBean contratoBean void reajustarTodasContratos(double percentual){ List<Contrato> contratos = em.createQuery(“select…”).getResultList(); for(Contrato contrato : contratos){ contratoBean.reajustarContrato(contrato, percentual); } }
![Page 15: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/15.jpg)
0
10
20
30
40
Local Server
78
32
18
SYNC ASYNC
![Page 16: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/16.jpg)
Mas eu queria abrir uma Thread…
![Page 17: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/17.jpg)
@Resource private ManagedExecutorService executor; void reajustaContratos(){ executor.execute(new Calculadora(contrato, 0.1)); } //——————————————————————————————————————————————-! class Calculadora implements Runnable{ Contrato contrato; double percentual;! public void run() { contrato.reajuste(percentual); } }
![Page 18: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/18.jpg)
@Resource private ManagedExecutorService executor; double reajustaContratos(){ Future<Double> reajusteFuture = executor .submit(new Calculadora(contrato, 0.1)); return reajusteFuture.get() } //——————————————————————————————————————————————-! class Calculadora implements Callable<Double>{ Contrato contrato; double percentual;! public Double call() { return contrato.reajuste(percentual); } }
![Page 19: Multithreading e JavaEE - qconsp.com · public Double reajustaContrato(Contrato contrato, double percent){ contrato.saldo *= (1 + percent); return contrato.saldo; }! import java.util.concurrent.Future;](https://reader035.vdocuments.site/reader035/viewer/2022071420/6118b128b3769a122352701b/html5/thumbnails/19.jpg)
DEMO