Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Concorrência em Java: do velho oeste a atualidade

Concorrência em Java: do velho oeste a atualidade

Qual a evolução de programação concorrente em Java e quais os desafios que enfrentamos no dia a dia? Nesta talk mostrei a evolução a API de concorrência da linguagem Java desde a versão 1.0 até agora e como trabalhar de maneira eficiente no cenário atual.

3c1b9c8d515093124b8c081107d4830c?s=128

Felipe Mamud

July 07, 2015
Tweet

Transcript

  1. Concorrência em Java: do velho oeste a atualidade.

  2. Agradecimentos

  3. Friends TechDay

  4. /dev/FelipeMamud @ftmamud github.com/fmamud meetup.com/groovybr slideshare.net/fmamud

  5. Concorrência em Java?

  6. 1996 2004 2011 2014 java.lang.Thread java.util.concurrent (JSR-166) 1.0 5.0 7

    Fork/Join Framework (JSR-166y) 8 Project Lambda Streams (sequential/parallel) 2016 9 Improve Contended Locking (JEP 143) Concorrência em Java...
  7. Threads Processos leves de execução de um programa. 1996 1.0

  8. Detalhes Java Threads • Threads preemptivas (context switch); • Prioridades

    - de 1 a 10; • Mapeamento 1:1; • Compartilhamento de estado; • Mensagens - wait() e notify(); • Sincronização (monitores mutuamente exclusivos).
  9. None
  10. Detalhes Java Threads Fonte: https://www.artima.com/insidejvm/ed2/threadsynch.html

  11. • Primitivas de concorrência não são fáceis de usar corretamente;

    synchronized, volatile, wait() and notify() • Suporte a diferentes tipos de locks; • Falta de construções de alto nível. (Ex. semaphores, thread pools, concurrent data structure, etc.) O que há de errado com elas?
  12. 2004 5.0 java.util.concurrent Classes que são projetadas para serem usadas

    ​​como blocos de construção na criação de classes ou aplicativos concorrentes.
  13. None
  14. Fork/Join Framework Implementação de um ExecutorService que ajuda você a

    tirar proveito da programação multicore. 2011 7
  15. None
  16. Lambdas uma função que pode ser criada sem pertencer a

    qualquer classe. Streams objetos que permitem obter dados de algum fluxo de entrada ou enviar dados para algum fluxo de saída, usando um protocolo básico comum. 2014 8
  17. None
  18. “Assim resplandeça a vossa luz diante dos homens, para que

    vejam as vossas boas obras e glorifiquem a vosso Pai, que está nos céus.” (Mateus 5:16) THANK YOU! FRIENDS TECHDAY COMPARTILHAR, APRENDER E CONTRIBUIR!
  19. Felipe Mamud @ftmamud Fabiano Silva @Fabiano_SS Weslley Andrade @Apolo716 Raphael

    Almeida @raphait FAÇA PARTE! FRIENDS TECHDAY COMPARTILHAR, APRENDER E CONTRIBUIR!