AULA 6PC

568 palavras 3 páginas
Programação Concorrente.

Semáforos
Na aula anterior mostramos o problema do Produtor/Consumidor que pode ser resolvido utilizando um monitor que bloqueia o recurso, permitindo apenas um acesso de cada vez.
Desta vez vamos comentar um pouco sobre semáforos, que permitem um número maior de Thread acessando os recursos.
Um semáforo é uma estrutura de dados que controla o acesso de aplicações aos recursos, baseando-se em um número inteiro, que representa a quantidade de acessos que podem ser feitos. Assim utilizamos semáforos para controlar a quantidade de acesso a determinado recurso.
Na API do Java existe uma implementação de semáforos que faz justamente esse controle. Vamos ver a seguir um exemplo que usa o Semáforo nativo do Java.

Utilizando Semáforos
Primeiro vamos definir uma implementação de Thread que vai utilizar o semáforo. public class ProcessadorThread extends Thread { private int idThread; private Semaphore semaforo; public ProcessadorThread(int id, Semaphore semaphore) { this.idThread = id; this.semaforo = semaphore;
}
}

Definimos inicialmente um identificador para a nossa Thread e uma referência a um semáforo que irá controlar o acesso a essas variáveis.
Agora vamos definir
ProcessadorThread:

os

métodos

da

nossa

Thread,

dentro

da

classe

private void processar() { try {
System.out.println("Thread #" + idThread + " processando");
Thread.sleep((long) (Math.random() * 10000));
} catch (Exception e) {
e.printStackTrace();
}
}

1
Prof.Fábio Rener

Programação Concorrente.
O método processar() apenas faz a thread dormir por algum tempo, simulando o efeito de um processamento longo. private void entrarRegiaoNaoCritica() {
System.out.println("Thread #" + idThread + " em região não crítica"); processar(); }

Este método simula o acesso da Thread em uma região não crítica, ou seja, uma região ao qual não é necessário pedir uma trava. Exibimos o atual estado da Thread, para facilitar o entendimento do progama, e realizamos um processamento qualquer.

Relacionados

  • pim2
    2143 palavras | 9 páginas
  • PIM GESTÃO TI
    2275 palavras | 10 páginas
  • Fisica 3
    11880 palavras | 48 páginas
  • PROJETO GIRASSOL ANO II Para PATROCINIO 07 De Julho
    10096 palavras | 41 páginas
  • Xadrez na Escola
    31394 palavras | 126 páginas
  • 1112344555
    23252 palavras | 94 páginas
  • 2222222
    23252 palavras | 94 páginas
  • Fundamentos De Matematica Aplicada Inform Tica
    32319 palavras | 130 páginas
  • estudo de impacto ambiental
    24973 palavras | 100 páginas
  • questões de matematica aplicada
    23919 palavras | 96 páginas