A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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();
}
}
}

1 个回复

倒序浏览
在单线程的情况下,比如只有主线程运行,假设push了一次,有pop一次,接着又pop,主线程便一直等待下去,因为没有其他的线程执行push操作来唤醒它。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马