Könnten Sie mir bitte sagen, in welchem Fall dieser Code eine java.util.NoSuchElementException werfen:Zufall java.util.NoSuchElementException auch mit Warte mit()
public class StackTest {
private LinkedList<Object> myList = new LinkedList<Object>();
public StackTest() {
Thread testStack = new Thread() {
@Override
public void run() {
while (true)
{
synchronized (myList)
{
try {
if (myList.size() == 0)
{
myList.wait();
}
Object elem = myList.removeLast();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
};
testStack.start();
}
public void enQueue(Object o)
{
synchronized(myList)
{
myList.addFirst(o);
myList.notifyAll();
}
}
}
Meine Schleife immer für die Enqueue Methode wartet Rufen Sie notifyAll auf, nachdem Sie ein Element hinzugefügt haben. Aber von Zeit zu Zeit habe ich eine java.util.NoSuchElementException wenn myList.removeLast()
Wenn es keinen Eintrag mehr in Ihrer Liste gibt? – Jens
Wenn es keine Eintragsgröße gibt, wird 0 sein und das Programm wird warten? if (myList.size() == 0) { myList.wait(); } – Djoz
Wenn die 'wait' beendet ist, aber' myList' noch leer ist ... Sind Sie sicher, dass 'wait' nur passiert, wenn' enQueue' aufgerufen wird? –