linked - synchronized java ejemplo
java.util.NoSuchElementException en la LinkedList sincronizada (1)
Encontré el problema y lo resolví también. Se ha producido una interruptedException y el estado interrumpido debe restaurarse en la declaración catch y también debe devolverse de la siguiente manera.
public class Que{
private Queue queue = new LinkedList();
public synchronized void enqueue(Runnable e) {
queue.add(e);
notifyAll();
}
public synchronized Object dequeue(){
Object object = null;
try{
while(queue.isEmpty()){
wait();
}
} catch (InterruptedException ie) {
Thread.currentThread().interrupt();//restore the status
return ie;//return InterruptedException object
}
object = (Object)queue.remove();// This line is generating exception
return object;
}
}
A continuación de la Queue
sincronizada se accede por número de productores y consumidores, se sincroniza pero sigue dando java.util.NoSuchElementException
al extraer el elemento de la cola. ¿Cuál es el problema y cómo resolverlo?
public class Que{
private Queue queue = new LinkedList();
public synchronized void enqueue(Runnable r) {
queue.add(r);
notifyAll();
}
public synchronized Object dequeue(){
Object object = null;
try{
while(queue.isEmpty()){
wait();
}
} catch (InterruptedException ie) {
}
object = (Object)queue.remove();// This line is generating exception
return object;
}
}