simpleobjectfifo.java
来自「用java线程演示的先进先出算法的程序」· Java 代码 · 共 79 行
JAVA
79 行
//import
public class SimpleObjectFIFO extends Object{
private Object[]queue;
private int capacity;
private int size;
private int head;
private int tail;
public SimpleObjectFIFO (int cap){
capacity=(cap>0)? cap:1;
queue=new Object[capacity];
head=0;
tail=0;
size=0;
}
public synchronized int getSize(){
return size;
}
public synchronized boolean isFull(){
return(size==capacity);
}
public synchronized void add(Object obj)
throws InterruptedException{
while (isFull()){
wait();
}
queue[head]=obj;
head=(head+1)%capacity;
size++;
notifyAll();
}
public synchronized Object remove()
throws InterruptedException{
while (size==0){
wait();
}
Object obj=queue[tail];
queue[tail]=null;
tail=(tail+1)%capacity;
size--;
notifyAll();
return obj;
}
public synchronized void printState(){
StringBuffer sb=new StringBuffer();
sb.append("fifo:\n");
sb.append("capacity="+capacity+"\n");
sb.append("size=" + size);
if(isFull()){
sb.append("FULL");
}else if (size==0){
sb.append(" - EMPTY");
}
sb.append("\n");
sb.append("head="+head+"\n");
sb.append("tail="+tail+"\n");
for(int i=0;i<queue.length;i++){
sb.append("queue["+i+"]="+queue[i]+"\n");
}
System.out.print(sb);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?