org.firebirdsql.pool
Class BlockingStack

java.lang.Object
  extended byorg.firebirdsql.pool.BlockingStack

public class BlockingStack
extends java.lang.Object

Object stack that implements a blocking LIFO (last-in-first-out) stack. The implementation will block when the list is empty.

Author:
Steven Jardine

Nested Class Summary
protected  class BlockingStack.Node
          Container class for objects in the stack.
 
Field Summary
protected  BlockingStack.Node top
          Actual top of the stack.
protected  java.lang.Object topLock
           
protected  int waiting
          Number of threads waiting for an object.
 
Constructor Summary
BlockingStack()
           
 
Method Summary
protected  java.lang.Object extract()
           
 boolean isEmpty()
          Checks to see if the stack is empty.
 java.lang.Object peek()
          Return, but do not remove, the object at the top of the stack.
 java.lang.Object pop()
          Return and remove the object at the top of the stack.
 java.lang.Object pop(long msec)
          Return and remove the object at the top of the stack only if it is available within the specified number of milliseconds, otherwise return null.
 void push(java.lang.Object item)
          Push an object onto the stack.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

top

protected BlockingStack.Node top
Actual top of the stack.


waiting

protected int waiting
Number of threads waiting for an object.


topLock

protected java.lang.Object topLock
Constructor Detail

BlockingStack

public BlockingStack()
Method Detail

isEmpty

public boolean isEmpty()
Checks to see if the stack is empty.

Returns:
true if empty, false otherwise.

peek

public java.lang.Object peek()
Return, but do not remove, the object at the top of the stack.

Returns:
the object at the top of the stack, null if stack is empty.

extract

protected java.lang.Object extract()

pop

public java.lang.Object pop()
                     throws java.lang.InterruptedException
Return and remove the object at the top of the stack. If the stack is empty, wait until an object exists.

Returns:
the object at the top of the stack.
Throws:
java.lang.InterruptedException

pop

public java.lang.Object pop(long msec)
                     throws java.lang.InterruptedException
Return and remove the object at the top of the stack only if it is available within the specified number of milliseconds, otherwise return null.

Parameters:
msec - to wait for an object before returning null.
Returns:
the object at the top of the stack.
Throws:
java.lang.InterruptedException

push

public void push(java.lang.Object item)
          throws java.lang.InterruptedException
Push an object onto the stack. If the stack is unavailable, wait until it becomes available.

Parameters:
item - to be pushed onto the stack.
Returns:
true is successful, false otherwise.
Throws:
java.lang.InterruptedException


Copyright © 2001 David Jencks and other authors. All rights reserved.