SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
CONCORRÊNCIA EM AMBIENTES
CORPORATIVOS
Concurrency 1.0:
Thiago Gonzaga
@thiago_javaboy
thiago.gonzaga@zup.com.br
Agenda
2
• Concorrência: Java SE vs. Java EE
• Problemas, problemas e mais problemas…
• Deep into
• Pra onde ir?
• Quem usa?
• Demo
• Case
• Referências
Sobre "Eu"
3
• Desenvolvedor Java
• Coordenador do Java Noroeste
• Organizador do Java Day (SJRP)
• Bláh
• Bláh
• Bláh
• Escritor de testes
Concorrência é tudo igual?
R: Conceito sim, aplicação não.
4
Plataforma Java SE
5
JVM
Bibliotecas Base (java.lang.Thread, java.util.concurrent, etc)
Bibliotecas de integração (JDBC, JNDI, RMI, etc)
Interface Gráfica (Swing, AWT)
Java EE
6
Plataforma Java SE
Processos, Gerenciamento de threads, controle de tempo de execução
Container EJB
Gerenciamento Lifeclycle
HTTP listeners
Servlets, web
services
Servidor HTTP Container Web
Instância do Servidor de Aplicação
Cumé?
Houston, we have a problem!
Problemas
8
• Thread pools gerenciados pelo container.
• Utilizar API de concorrência do Java SE no
Java EE sempre foi tido como má pratica.
• Threads dentro de EJBs/Servlets
• não gerenciáveis.
• sem garantia.
• Contexto
• JMS e EJBs assíncronos podem ser
complexos
O que fazer?
9
Corra pras colinas e salvem suas vidas!!!!
NÃO!!!!!
10
Solução: Java EE 7
Estamos falando "especificamente" da
especificação JSR-236
Java SE Concurrency Utilities
11
• ExecutorService
• ScheduledExecutorService
• ThreadFactory
Java EE Concurrency Utilities
12
• ManagedExecutorService
• ManagedScheduledExecutorService
• ManagedThreadFactory
• ContextService
Setup
13
• Configurações pelo AS
• Quantidade de Cores
• Quantidades de Threads
• Fila
• etc.
Quem implementa?
Demo
15
Case
16
Solução
24
• Notificador
• Cria threads de notificação tanto para
sucessos ou erros.
• EJB Singleton
• Gera registros de “log”
• MongoDB
• Utiliza contexto para salvar páginas html
Referências
25
• Meu Blog
• www.arquivolivre.com.br
• Oracle
• www.oracle.com/technetwork/java/javaee
• JSR 236 - Concurrency Utilities Java EE
• jcp.org/en/jsr/detail?id=236
• JSR 166 - Concurrency Utilities Java SE
• jcp.org/en/jsr/detail?id=166
Perguntas??????
26
OBRIGADO!
Concurrency 1.0: Concorrência em Ambientes Corporativos
Thiago Gonzaga
@thiago_javaboy
thiago.gonzaga@zup.com.br

Mais conteúdo relacionado

Semelhante a Concorrência Ambientes Corporativos

Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaAndrei Tognolo
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasLucas Caton
 
Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma JavaEteg
 
TDC2018FLN | Trilha Ruby - Como turbinamos nossa sua suite de testes Rails em...
TDC2018FLN | Trilha Ruby - Como turbinamos nossa sua suite de testes Rails em...TDC2018FLN | Trilha Ruby - Como turbinamos nossa sua suite de testes Rails em...
TDC2018FLN | Trilha Ruby - Como turbinamos nossa sua suite de testes Rails em...tdc-globalcode
 
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte IMeetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte IMauricio Fernandes de Castro
 
Rubysoc final RubyConfBR
Rubysoc final RubyConfBRRubysoc final RubyConfBR
Rubysoc final RubyConfBRtchandy
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisAna Paula Gomes
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineFrederico Maia Arantes
 
Spring roo produtividade no java
Spring roo produtividade no javaSpring roo produtividade no java
Spring roo produtividade no javaPedro Cavalero
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Daniel Destro Do Carmo
 

Semelhante a Concorrência Ambientes Corporativos (20)

Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo java
 
Aula 1 - Seja um programador Java
Aula 1 - Seja um programador JavaAula 1 - Seja um programador Java
Aula 1 - Seja um programador Java
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Conhecendo o Java 8
Conhecendo o Java 8Conhecendo o Java 8
Conhecendo o Java 8
 
Jpa de a à z por que conhecer jpa
Jpa de a à z  por que conhecer jpa Jpa de a à z  por que conhecer jpa
Jpa de a à z por que conhecer jpa
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticas
 
Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma Java
 
Inovando na Plataforma Java
Inovando na Plataforma JavaInovando na Plataforma Java
Inovando na Plataforma Java
 
TDC2018FLN | Trilha Ruby - Como turbinamos nossa sua suite de testes Rails em...
TDC2018FLN | Trilha Ruby - Como turbinamos nossa sua suite de testes Rails em...TDC2018FLN | Trilha Ruby - Como turbinamos nossa sua suite de testes Rails em...
TDC2018FLN | Trilha Ruby - Como turbinamos nossa sua suite de testes Rails em...
 
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte IMeetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
 
Rubysoc final RubyConfBR
Rubysoc final RubyConfBRRubysoc final RubyConfBR
Rubysoc final RubyConfBR
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e mais
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Web debugging proxies
Web debugging proxiesWeb debugging proxies
Web debugging proxies
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
 
Spring roo produtividade no java
Spring roo produtividade no javaSpring roo produtividade no java
Spring roo produtividade no java
 
Curso HTML 5 - Aula Inicial
Curso HTML 5 - Aula InicialCurso HTML 5 - Aula Inicial
Curso HTML 5 - Aula Inicial
 
Ibes main
Ibes   mainIbes   main
Ibes main
 
Java v1.1
Java v1.1Java v1.1
Java v1.1
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
 

Mais de Thiago Gonzaga

Big Data: Seus problemas estão apenas começando
Big Data: Seus problemas estão apenas começandoBig Data: Seus problemas estão apenas começando
Big Data: Seus problemas estão apenas começandoThiago Gonzaga
 
Keynote Abertura 20 Dias de Java - Javanoroeste
Keynote Abertura 20 Dias de Java - JavanoroesteKeynote Abertura 20 Dias de Java - Javanoroeste
Keynote Abertura 20 Dias de Java - JavanoroesteThiago Gonzaga
 
Virtualização e cloud computing
Virtualização e cloud computingVirtualização e cloud computing
Virtualização e cloud computingThiago Gonzaga
 
Introdução a Tecnologia Java
Introdução a Tecnologia JavaIntrodução a Tecnologia Java
Introdução a Tecnologia JavaThiago Gonzaga
 

Mais de Thiago Gonzaga (7)

Big Data: Seus problemas estão apenas começando
Big Data: Seus problemas estão apenas começandoBig Data: Seus problemas estão apenas começando
Big Data: Seus problemas estão apenas começando
 
Software Livre
Software LivreSoftware Livre
Software Livre
 
Keynote Abertura 20 Dias de Java - Javanoroeste
Keynote Abertura 20 Dias de Java - JavanoroesteKeynote Abertura 20 Dias de Java - Javanoroeste
Keynote Abertura 20 Dias de Java - Javanoroeste
 
Java 8 e futuro
Java 8 e futuroJava 8 e futuro
Java 8 e futuro
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Virtualização e cloud computing
Virtualização e cloud computingVirtualização e cloud computing
Virtualização e cloud computing
 
Introdução a Tecnologia Java
Introdução a Tecnologia JavaIntrodução a Tecnologia Java
Introdução a Tecnologia Java
 

Concorrência Ambientes Corporativos