有一个阿里88的面试题 第四题 我感觉是 死锁
有一个阿里88的面试题原题是java的, 我感觉是死锁,但java版没人提这个, 看看这边C#有大牛能看出来吗?
如果是,鄙视以下哪些搞java的
原题在这里 第四题:
http://topic.csdn.net/u/20120315/14/91f69b1a-2d18-4512-ab77-34799eaad132.html
下面的代码大部分情况下没有问题,在什么情况下会有问题?为什么?
java code
public class Stack { LinkedList list = new LinkedList(); public synchronized void push(Object x){ synchronized(this){ list.addLast(x); notify(); } } public synchronized Object pop() throws Exception{ synchronized(this){ if(list.size() <= 0){ wait(); } return list.removeLast(); } } public static void main(String[] args) { }}
public synchronized Object pop() throws Exception{ synchronized(this){ if(list.size() > 0){ return list.removeLast(); } } return pop(); }
[解决办法]