public class WorkerStack {
protected Worker[] workers = null;
protected int end = 0;
public WorkerStack(int size) {
workers = new Worker[size];
}
/**
* Put the object into the queue. If the queue is full (for example if
* the queue has been reduced in size) the object will be dropped.
*
* @param object the object to be appended to the queue (first
* element).
*/
public void push(Worker worker) {
if (end < workers.length) {
workers[end++] = worker;
} else {
curThreads--;
}
}
/**
* Get the first object out of the queue. Return null if the queue
* is empty.
*/
public Worker pop() {
if (end > 0) {
return workers[--end];
}
return null;
}
/**
* Get the first object out of the queue, Return null if the queue
* is empty.
*/
public Worker peek() {
return workers[end];
}
/**
* Is the queue empty?
*/
public boolean isEmpty() {
return (end == 0);
}
/**
* How many elements are there in this queue?
*/
public int size() {
return (end);
}
/**
* Resize the queue. If there are too many objects in the queue for the
* new size, drop the excess.
*
* @param newSize
*/
public void resize(int newSize) {
Worker[] newWorkers = new Worker[newSize];
int len = workers.length;
if (newSize < len) {
len = newSize;
}
System.arraycopy(workers, 0, newWorkers, 0, len);
workers = newWorkers;
}
}
以上代码来源于Tomcat 6源码
983

被折叠的 条评论
为什么被折叠?



