A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Threads sem Sincronização

Apresentações semelhantes


Apresentação em tema: "Threads sem Sincronização"— Transcrição da apresentação:

1 Threads sem Sincronização

2 Threads sem Sincronização
Frequentemente, múltiplas threads de execução manipulam um objeto compartilhado na memória. Quando isto ocorre, e esse objeto é modificado por uma ou mais threads, podem ocorrer resultados inesperados.

3 Threads sem Sincronização
Quando isto ocorre, o comportamento do programa não pode ser confiável. O programa pode produzir tanto resultados corretos como incorretos. Neste caso, o objeto compartilhado precisa ser gerenciado adequadamente.

4 Sincronização de Threads
O problema pode ser resolvido fornecendo a uma thread por vez, o código de acesso exclusivo que manipula o objeto compartilhado. As outras threads que desejam manipular o objeto são mantidas em espera.

5 Sincronização de Threads
Quando a thread que tem o acesso exclusivo ao objeto, terminar, uma das threads que foi mantida na espera, tem a permissão de prosseguir. Toda thread que acessa o objeto compartilhado, exclui todas as outras threads de fazer o acesso ao objeto compartilhado.

6 Sincronização de Threads
Esse mecanismo é chamado de exclusão mútua. Exclusão mútua permite ao programador fazer a sincronização de threads, que coordena o acesso ao objeto compartilhado (dados compartilhados) para múltiplas threads concorrentes.

7 Sincronização de Threads
Java realiza sincronização de threads através de: Monitores Locks Semáforos

8 Monitor Utilizar monitores pre-definidos de Java.
Cada objeto compartilhado tem um monitor, que permite que uma thread por vez execute dentro de uma instrução synchronized no objeto compartilhado.

9 Monitor Existirá um bloqueio no objeto compartilhado, quando uma instrução synchronized é executada. Todas as threads que tentarem executar uma instrução synchronized no objeto compartilhado, serão colocadas no estado bloqueado.

10 Monitor Quando uma thread executável tem de esperar para entrar em uma instrução synchronized, ela transita para o estado bloqueado. Quando a thread bloqueada entra em uma instrução synchronized , ela transita para o estado executável.

11 Monitor Quando uma instrução synchronized concluir sua execução, o bloqueio do monitor no objeto compartilhado, será liberado, e a thread bloqueada de prioridade mais alta que estiver tentando entrar em uma instrução synchronized prosseguirá.

12 Instrução synchronized
synchronized ( objeto ) { instruções } // fim da instrução synchronized

13 Métodos synchronized Java permite métodos synchronized.
Um método synchronized é equivalente a uma instrução synchronized para incluir o corpo inteiro de um método. Ver os exemplos Deitel 23.6, e 23.8 mais os exemplos e 23.20


Carregar ppt "Threads sem Sincronização"

Apresentações semelhantes


Anúncios Google