1 / 13

Threads sem Sincronização

Threads sem Sincronização. 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. Threads sem Sincronização.

olive
Download Presentation

Threads sem Sincronização

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. 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 synchronizedno 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, 23.7 e 23.8mais os exemplos 23.19 e 23.20

More Related