org.logicalcobwebs.concurrent |
Concurrency utilities.
Originally written by Doug Lea and released into the public domain.
This may be used for any purposes whatsoever without acknowledgment.
Thanks for the assistance and support of Sun Microsystems Labs,
and everyone contributing, testing, and using this code.
|
Java Source File Name | Type | Comment |
BoundedChannel.java | Interface | A channel that is known to have a capacity, signifying
that put operations may block when the
capacity is reached. |
Callable.java | Interface | Interface for runnable actions that bear results and/or throw Exceptions.
This interface is designed to provide a common protocol for
result-bearing actions that can be run independently in threads,
in which case
they are ordinarily used as the bases of Runnables that set
FutureResults
[ Introduction to this package. |
Channel.java | Interface | Main interface for buffers, queues, pipes, conduits, etc.
A Channel represents anything that you can put items
into and take them out of. |
DefaultChannelCapacity.java | Class | A utility class to set the default capacity of
BoundedChannel
implementations that otherwise require a capacity argument
See Also: BoundedChannel See Also: [ Introduction to this package. |
Executor.java | Interface | Interface for objects that execute Runnables,
as well as various objects that can be wrapped
as Runnables.
The main reason to use Executor throughout a program or
subsystem is to provide flexibility: You can easily
change from using thread-per-task to using pools or
queuing, without needing to change most of your code that
generates tasks.
The general intent is that execution be asynchronous,
or at least independent of the caller. |
FJTask.java | Class | Abstract base class for Fork/Join Tasks.
FJTasks are lightweight, stripped-down analogs of Threads.
Many FJTasks share the same pool of Java threads. |
FJTaskRunner.java | Class | Specialized Thread subclass for running FJTasks.
Each FJTaskRunner keeps FJTasks in a double-ended queue (DEQ).
Double-ended queues support stack-based operations
push and pop, as well as queue-based operations put and take.
Normally, threads run their own tasks. |
FJTaskRunnerGroup.java | Class | A stripped down analog of a ThreadGroup used for
establishing and managing FJTaskRunner threads.
ThreadRunnerGroups serve as the control boundary separating
the general world of normal threads from the specialized world
of FJTasks.
By intent, this class does not subclass java.lang.ThreadGroup, and
does not support most methods found in ThreadGroups, since they
would make no sense for FJTaskRunner threads. |
FutureResult.java | Class | A class maintaining a single reference variable serving as the result
of an operation. |
LinkedNode.java | Class | |
LinkedQueue.java | Class | A linked list based channel implementation.
The algorithm avoids contention between puts
and takes when the queue is not empty.
Normally a put and a take can proceed simultaneously.
(Although it does not allow multiple concurrent puts or takes.)
This class tends to perform more efficently than
other Channel implementations in producer/consumer
applications.
[ Introduction to this package. |
Puttable.java | Interface | This interface exists to enable stricter type checking
for channels. |
ReaderPreferenceReadWriteLock.java | Class | A ReadWriteLock that prefers waiting readers over
waiting writers when there is contention. |
ReadWriteLock.java | Interface | ReadWriteLocks maintain a pair of associated locks.
The readLock may be held simultanously by multiple
reader threads, so long as there are no writers. |
Sync.java | Interface | Main interface for locks, gates, and conditions.
Sync objects isolate waiting and notification for particular
logical states, resource availability, events, and the like that are
shared across multiple threads. |
SynchronizedInt.java | Class | A class useful for offloading synch for int instance variables.
[ Introduction to this package. |
SynchronizedVariable.java | Class | Base class for simple, small classes
maintaining single values that are always accessed
and updated under synchronization. |
Takable.java | Interface | This interface exists to enable stricter type checking
for channels. |
TimeoutException.java | Class | Thrown by synchronization classes that report
timeouts via exceptions. |
WriterPreferenceReadWriteLock.java | Class | A ReadWriteLock that prefers waiting writers over
waiting readers when there is contention. |