あなたは、このコードはjava.util.NoSuchElementExceptionを投げ、その場合には教えてくださいでした:ランダムjava.util.NoSuchElementException()
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();
}
}
}
私のループは常にへのエンキュー方法を待っています要素を追加した後にnotifyAllを呼び出します。しかし時々、呼び出すときにjava.util.NoSuchElementExceptionが発生するmyList.removeLast()
あなたのリストにエントリがない場合は、 – Jens
エントリのサイズがない場合は0になり、プログラムは待機しますか? (myList.size()== 0) } – Djoz
'wait'が完了したのに' myList'がまだ空の場合... 'wait'は' enQueue'が呼び出されたときにのみ起こると確信していますか? –