Semáforos

3 respostas
B

Olá pessoal. Então estou com um problema. Alguém sabe se existe semáforos para java, ou algum método que faça a exclusão mútua entre threads? É que num trecho de código, aonde várias threads irão executar, eu tenho que limitar um pedaço que só 1 thread execute por vez, naum pode existir mais de uma thread nesse trecho, as outras vão ter que ficar bloqueadas até que a thread que esteje lah termine sua execução. E caso essa thread que esteje em execução não consiga terminar de executar, ou seja, ocorra algum erro, terá que ter um jeito que o java libere a outra para executar, senão, se caso alguma der erro, as outras não vão executar nunca.

Valew
Rodrigo

3 Respostas

M

“booble”:
Olá pessoal. Então estou com um problema. Alguém sabe se existe semáforos para java, ou algum método que faça a exclusão mútua entre threads? É que num trecho de código, aonde várias threads irão executar, eu tenho que limitar um pedaço que só 1 thread execute por vez, naum pode existir mais de uma thread nesse trecho, as outras vão ter que ficar bloqueadas até que a thread que esteje lah termine sua execução. E caso essa thread que esteje em execução não consiga terminar de executar, ou seja, ocorra algum erro, terá que ter um jeito que o java libere a outra para executar, senão, se caso alguma der erro, as outras não vão executar nunca.

Valew
Rodrigo

Use o synchronized.

synchronized(OBJETO) {
    // codigo thread safe,
}

Ou faça um método sincronizado.

public synchronized Object bla() {
//////
}
D

valeu ai,
num era bem isso que eu tava querendo fazer…
mas acabou me dando uma dica do problema…

H

Bom, pela descrição que você deu, synchronized faz exatamente o que você quer, e foi feito precisamente para isso. Poderia descrever melhor? Se versão da JVM não for problema, no Java 1.5 tem um novo pacote, java.util.concurrent, com um monte de classes feitas para questões de concorrência.

Espero ter ajudado,

Criado 6 de outubro de 2004
Ultima resposta 12 de out. de 2004
Respostas 3
Participantes 4