1 / 27

Novas facilidades de concorrência com o Java7

Novas facilidades de concorrência com o Java7. Luiz Arnaldo de Gusmão Bastos lucabastos@gmail.com. 1945 John Neumann e outros Primeiro modelo de computador. 1960 Sistemas operacionais “time sharing”. Início da década de 80 IBM PC. Situação atual. Evolução dos microprocessadores.

christa
Download Presentation

Novas facilidades de concorrência com o Java7

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Novas facilidades de concorrência com o Java7 Luiz Arnaldo de Gusmão Bastos lucabastos@gmail.com

  2. 1945 John Neumann e outros Primeiro modelo de computador

  3. 1960 Sistemas operacionais “time sharing”

  4. Início da década de 80 IBM PC

  5. Situação atual

  6. Evolução dos microprocessadores

  7. Lei de Amdahl (1967) S = tempo gasto no processamento seqüencial n = número de processadores

  8. Exemplo da lei de Amdahl S = 60%

  9. Lei de Amdahl modificada S = tempo gasto no processamento seqüencial n = número de processadores H(n) = overhead devido a adicão de threads (sincronização, atividades entre as threads, etc.)

  10. Lei de Gustafson s = tempo gasto no processamento seqüencial N = número de processadores s = 60%

  11. Resumo até agora Ganho depende da relação entre o processamento seqüencial e o processamento concorrente do sistema

  12. Pergunta que nos interessa: A plataforma Java permite aproveitar de forma correta e eficiente o novo hardware multiprocessado?

  13. Resposta • O Java já é uma das melhores plataformas para aplicações concorrentes. • Mas o uso correto e eficiente do novo hardware multiprocessado ainda ficará por conta da habilidade do programador.

  14. Java é uma ótima plataforma mas ainda enfrenta algumas lendas urbanas Pergunta: new Object() é mais lento do que malloc?

  15. Resposta: Não O Garbage collector do Java é tão ou mais eficiente do que fazer gerenciamento direto da memória com malloc/free do C/C++

  16. Outra crendice A performance sempre piora muito com o uso de synchronized, volatile ou Locks Totalmente errado. Não deixem de usar os recursos do Java apenas por ouvir falar.

  17. Resumindo • Java não é tão bom quanto o Erlang para aplicações concorrentes mas é muito bom e melhor do que a maioria das plataformas. • Desenvolver aplicações concorrentes é difícil e apesar do Java facilitar muitas coisas, não perdoa programação ruim.

  18. Candidatas a novidades no modo de tratar concorrência no Java 7 • Framework Fork/Join • TransferQueue • ParallelArray

  19. Onde obter as candidatas • Por enquando se chama jsr166y e pode ser obtida em: • http://gee.cs.oswego.edu/dl/jsr166/dist/

  20. Framework Fork/Join Result solve(Problem problema) { if (problem é pequeno) resolve diretamente else { divide o problema em partes independentes fork novas subtarefas para resolver cada parte join todas as subtarefas compõe os resultados a partir dos subresultados } }

  21. TransferQueue • Interface que extende BlockingQueuee é usada quando o produtor precisa esperar que os consumidores estejam prontos para receber os elementos. • A classe que implementa esta interface é LinkedTransferQueue que é uma TransferQueue ilimitada baseada em nós linkados

  22. ParallelArray • Como o nome diz, é um array que suporta operações paralelas • Fornece operações do tipo: apply, map, reduce, select, transform, etc. • Encapsula um ForkJoinExecutor e um array de modo a permitir as operações paralelas.

  23. Exemplo de ParallelArray import static Ops.*;class StudentStatistics {    ParallelArray<Student> students = ...    // ...    public double getMaxSeniorGpa() {      return students.withFilter(isSenior).withMapping(gpaField).max();    }    // helpers:    static final class IsSenior implements Predicate<Student> {      public boolean evaluate(Student s) { return s.credits > 90; }    }    static final IsSenior isSenior = new IsSenior();    static final class GpaField implements MappertoDouble<Student> {      public double map(Student s) { return s.gpa; }    }    static final GpaField gpaField = new GpaField(); }

  24. O que pensa o mentor das novidades • O prof. Doug Lea não espera uma adoção em massa das novas facilidades. • Poucas aplicações precisarão do seu uso. • Mas os que realmente precisarem terão nas mãos mais opções

  25. Lembrete • O mundo é concorrente • As coisas no mundo não compartilham dados • As coisas se comunicam por mensagens • As coisas, às vezes, falham

  26. Dúvidas? lucabastos@gmail.com

More Related