Pregunta

Parece que no puedo encontrar nada equivalente a un semáforo en Blackberry Java Reference. ¿Qué me estoy perdiendo? java.util.concurrent ni siquiera está allí.

¡Gracias! Sean

¿Fue útil?

Solución

Entonces, para cualquiera que se encuentre con esto, la excelente respuesta de coldice me lleva a esta página, que explica cómo implementar varios tipos de semáforos utilizando las primitivas de espera / notificación disponibles en J2ME http://tutorials.jenkov.com/java-concurrency/semaphores.html . Gracias!

Otros consejos

De Uso de hilos en aplicaciones J2ME por Eric Giguere :

  

El monitor mantiene una cola de hilos en espera, permitiendo que solo un hilo a la vez ingrese al bloque.

     

Debido a que cada objeto Java puede actuar como monitor, la clase java.lang.Object define tres métodos que exponen esta funcionalidad básica: wait (), notify (), y notifyAll (). Cualquier hilo puede suspenderse llamando al método wait () de un objeto:

...
Object obj = .... // some object to use as a lock

synchronized( obj ){
    // here is where you'd check obj's state

    try {
    obj.wait();
    }
    catch( InterruptedException e ){
    }
}
...
  

El hilo debe bloquear el objeto antes de invocar su método wait (). También debe detectar la excepción java.lang.InterruptedException y tratar adecuadamente las interrupciones de subprocesos. El subproceso libera implícitamente su bloqueo en el objeto después de que se suspende.

     

El método wait () está sobrecargado: el hilo puede especificar un tiempo de espera opcional en milisegundos si no quiere esperar indefinidamente.

     

Una vez que un subproceso se suspende, otro subproceso lo libera invocando el mismo método notify () o notifyAll ():

...
Object obj = .... // same object used as lock!

synchronized( obj ){
    obj.notify();  // or notifyAll
}
...
  

Nuevamente, el segundo hilo debe bloquear el objeto antes de llamar a notify () o notifyAll (). Estos dos métodos se comportan igual excepto que uno despierta un hilo en espera mientras que el otro despierta todos los hilos en espera. El orden en que se despiertan los hilos no se especifica. Cada subproceso recién despertado debe volver a obtener su bloqueo en el objeto antes de que pueda continuar, porque su bloqueo en el objeto se liberó implícitamente cuando se suspendió.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top