9000ED!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!# PhotoGear - 摄影器材
n*e
1 楼
在网上和版上搜了半天,implement一个thread-safe blockingqueue. 大家看看有没有
问题:
import java.utils.LinkedList;
public class BlockingQueue {
private int capactiy;
private LinkedList elements;
public BlockingQueue(int capacity) {
if (capacity <=0 ) {
throw new exception();
}
this.capacity = capacity;
this.elements = new LinkedList ();
}
public synchronized void put(T t) {
while(elements.size() == capacity) {
wait();
}
boolean flag = false;
if (elements.size() == 0) {
flag = true;
}
elements.add(t);
if (flag) {
notifyAll();
}
}
public synchronized T take(T t) {
while(elements.size() == 0) {
wait();
}
boolean flag = false;
if (elements.size() == capacity) {
flag = true;
}
T t = elements.remove(0);
if (flag) {
notifyAll();
}
return t;
}
}
问题:
import java.utils.LinkedList;
public class BlockingQueue
private int capactiy;
private LinkedList
public BlockingQueue(int capacity) {
if (capacity <=0 ) {
throw new exception();
}
this.capacity = capacity;
this.elements = new LinkedList
}
public synchronized void put(T t) {
while(elements.size() == capacity) {
wait();
}
boolean flag = false;
if (elements.size() == 0) {
flag = true;
}
elements.add(t);
if (flag) {
notifyAll();
}
}
public synchronized T take(T t) {
while(elements.size() == 0) {
wait();
}
boolean flag = false;
if (elements.size() == capacity) {
flag = true;
}
T t = elements.remove(0);
if (flag) {
notifyAll();
}
return t;
}
}