package com.daicy.ProducerConsumer;
import java.util.concurrent.LinkedBlockingQueue;
public class DLinkedBlockingQueue<E> implements IDStack<E> {
private LinkedBlockingQueue stack = new LinkedBlockingQueue();
@Override
public E push(E item) throws InterruptedException {
// TODO Auto-generated method stub
stack.put(item);
return item;
}
@Override
public E pop() throws InterruptedException {
// TODO Auto-generated method stub
return (E) stack.take();
}
}
package com.daicy.ProducerConsumer;
import java.util.Stack;
public class DStack<E> implements IDStack<E> {
private Stack stack = new Stack();
public synchronized E push(E item) {
stack.push(item);
notify();
return item;
}
public synchronized E pop() throws InterruptedException {
while (stack.size() == 0) {
this.wait();
}
return (E) stack.pop();
}
}
package com.daicy.ProducerConsumer;
public interface IDStack<E> {
public E push(E item) throws InterruptedException;
public E pop() throws InterruptedException;
}
package com.daicy.ProducerConsumer;
public class Mantou {
private int id;
Mantou(int id) {
this.id = id;
}
public String toString() {
return "Mantou :" + id;
}
}
package com.daicy.sequence;
public class SafeSequence {
private static int value;
public static synchronized int getNext() {
return value++;
}
}