Download presentation
Presentation is loading. Please wait.
1
Semáforos Plataforma Java 1.5 Juliano Cardoso Vacaro
2
Agenda Definição (Tanenbaum) API Java JDK 1.5
3
Semáforos (Tanenbaum) Definição Sincronização de Processos Bloqueantes Baixo Nível Composto por: Duas Primitivas: UP e DOWN Inteiro não negativo Fila de processos
4
Semáforos (Tanenbaum) Definição UP(s) se s = 0 e existem processos bloqueados então: libera um dos processos Senão: s := s + 1 DOWN(s) se s > 0 então: s:= s – 1 senão: processo é bloqueado
5
Semáforos (Tanenbaum) Observações UP e DOWN devem ser atômicos UP representa a primitiva V DOWN representa a primitiva P O contador do semáforo representa o número de recursos disponíveis
6
Semáforos (Java) Criação Modelados pela classe Semaphore Na criação de um objeto pode-se especificar: Valor do contador do semáforo Modo de gerenciamento da fila de processos bloqueados (FIFO ou não ordenada)
7
Semáforos (Java) Criação Protótipo Semaphore(int permits, boolean fair) Onde permits: valor inicial do contador do semáforo fair: se verdadeiro define ordenação FIFO da fila de processos bloqueados
8
Semáforos (Java) Requisição/Liberação Requisição (Primitiva P) Métodos bloqueantes Métodos bloqueantes com timeout Métodos Não bloqueantes Liberação (Primitiva V) Métodos Não bloqueantes
9
Semáforos (Java) Requisição Protótipos Bloqueantes acquire() acquire(int permits) Não Bloquantes tryAcquire(int permits, long timeout, TimeUnit unit) Onde permits: decremento do contador do semáforo timeout: tempo de espera pela permissão ao acesso
10
Semáforos (Java) Liberação Protótipos release() release(int permits) Onde Permits: incremento do contador do semáforo
11
Semáforos (Java) Status availablePermits() Informa o número de acessos permitidos no momento getQueueLength() Retorna o número de threads bloquadas Apenas uma estimativa (sem sincronização)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.