黑马程序员技术交流社区
标题:
程序在一定的条件下出错的问题,找出问题根源
[打印本页]
作者:
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