Threads
O que é Thread●   O principal conceito de Thread está na ideia de executar    mais de uma tarefa simultaneamente●   Situaç...
Dormindo●   Podemos fazer uma thread parar momentanteamente de    executar-se usando o método Thread.sleep●   Temos de esp...
Como chama-las●   Para chamar uma nova thread (tarefa) dentro de um    processo será necessario criar um objeto Thread e c...
Escalonador●   Podemos observar que a saida no exemplo proposto não    necessariamente é a mesma●   Threads concorrem pelo...
Garbage Collector●   É uma Thread responsavel por jogar fora todos os objetos    não referenciados●   Ao desalocar um obje...
Problemas de Concorrência●   Ao trabalhar com Threads, em algumas situações teremos    uma ou mais Threads tentando acessa...
Aplicações●   Processameto paralelo●   Processamento concorrente●   Conexão com servidores●   Map/Reduce●   Aproveitamento...
Duvidas?
Próximos SlideShares
Carregando em…5
×

12 threads

556 visualizações

Publicada em

Publicada em: Educação
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
556
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
8
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

12 threads

  1. 1. Threads
  2. 2. O que é Thread● O principal conceito de Thread está na ideia de executar mais de uma tarefa simultaneamente● Situação comum quando executamos mais de tarefa: Navegamos na internet, digitamos um texto, assistimos um video ou escutamos música● Quando usamos vários programas diferentes, o sistema operacional, os gerencia através de processos diferentes● Em um programa (ou processo) só, se quisermos executar tarefas em paralelo, normalmente falamos de threads● Nas threads, diferentes tarefas compartilham os mesmos objetos em memoria, nos processos isso não acontece
  3. 3. Dormindo● Podemos fazer uma thread parar momentanteamente de executar-se usando o método Thread.sleep● Temos de especificar q quantidade de milisegundos que uma Thread deve permanecer dormente Thread.sleep(5000)
  4. 4. Como chama-las● Para chamar uma nova thread (tarefa) dentro de um processo será necessario criar um objeto Thread e chamar o metodo start()● Entretanto mesmo que isso chame uma nova tarefa será necessario especificar o que queremos executar nessa nova tarefa● Especificamos o metodo criando uma outra classe que implemente a interface Runnable e passando-a no construtor da Thread● Ao implementar a interface Runnable, será necessario implementar o metodo run
  5. 5. Escalonador● Podemos observar que a saida no exemplo proposto não necessariamente é a mesma● Threads concorrem pelo único processador, como o mesmo só pode executar uma thread por vez, entra em cena o escalonador● O Escalonador é o responsavel por escolher a proxima Thread a ser executada e fazer a troca de contexto● As threads dormem e são salvas na hora da troca de contexto, para depois poderem retomar sua execução no ponto que foram interrompidas● Não temos controle sobre o escalonador
  6. 6. Garbage Collector● É uma Thread responsavel por jogar fora todos os objetos não referenciados● Ao desalocar um objeto, não se pode afirmar se ele ainda está na memoria● O que se pode afirmar é que ao ser desalocado, em algum momento o GC irá liberar aquele epaço na memória
  7. 7. Problemas de Concorrência● Ao trabalhar com Threads, em algumas situações teremos uma ou mais Threads tentando acessar/modificar um recurso ao mesmo tempo● Imagine que duas Threads estejam efetuando uma operação em ContaCorrente, uma saca e outra deposita. É possivel que uma das operações seja ignorada.● Para evitar esse tipo de situação a palavra synchronized é utilizada● Relembrando collections: ArrayList != Vector HashMap != Hashtable
  8. 8. Aplicações● Processameto paralelo● Processamento concorrente● Conexão com servidores● Map/Reduce● Aproveitamento de processadores multicore
  9. 9. Duvidas?

×