The Server Classes
As explained in Runnable Servers, a runnable server is a threaded runnable that accepts and queues any number of runnable objects and executes them within its own internal thread or threads.
The runnable server classes include:
*RWRunnableServer —A threaded runnable that accepts runnable objects and executes them using its own, internal thread. An application using an RWRunnableServer will contain at least two threads: the main thread that created the RWRunnableServer, and the thread that is running the RWRunnableServer do-loop.
The RWRunnableServer do-loop performs the following operations until a termination condition (cancellation or stop) occurs:
*Get the next available runnable (may block).
*Check for a termination condition.
*Execute the runnable.
*RWServerPool — A threaded runnable that accepts runnable objects and dispatches each one to the next available RWRunnableServer object from an internal pool of such objects. An application containing an RWServerPool will contain at least 2 + n threads: the main thread that created the RWServerPool, the thread that is running the RWServerPool do-loop, and n RWRunnableServer threads each executing the do-loop of an RWRunnableServer in the RWServerPool's internal queue.
The RWServerPool do-loop performs the following operations until a termination condition (cancellation or stop) occurs:
*Get the next available runnable (may block).
*Check for a termination condition.
*Get the next available runnable server (may block).
*Check for a termination condition.
*Enqueue the runnable on the runnable server.