variable linked example ejemplo copyonwritearraylist concurrent java multithreading concurrency linked-list synchronization

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; } }