黑马程序员技术交流社区

标题: 程序在一定的条件下出错的问题,找出问题根源 [打印本页]

作者: Crystal静新    时间: 2014-5-4 17:15
标题: 程序在一定的条件下出错的问题,找出问题根源
本帖最后由 Crystal静新 于 2014-5-5 21:34 编辑

下面的代码在绝大部分时间内都运行得很正常,请问在什么情况下会出现问题?问题的根源在哪里?
import java.util.LinkedList;

public class Stack {

LinkedList list = new LinkedList();

public synchronized void push(Object x) {
synchronized(list) {
list.addLast( x );
notify();
}
}

public synchronized Object pop()
throws Exception {
synchronized(list) {
if( list.size() <= 0 ) {
wait();
}
return list.removeLast();
}
}
}

作者: Lin0411    时间: 2014-5-4 17:26
在单线程的情况下,比如只有主线程运行,假设push了一次,有pop一次,接着又pop,主线程便一直等待下去,因为没有其他的线程执行push操作来唤醒它。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2