Proposal for Threading Package

(0) Rationale

Many server-side applications run in an environment of multiple threads. In such environments, the issues of how to coordinate and communicate with the various threads are generic enough to be amenable to general purpose solutions. The proposed Threading Goodies package includes standard classes that can be used for these purposes.

(1) Scope of the Package

This proposal is to create a package of Java utility interfaces and classes that aid in coordinating and communication between multiple threads in a single Java Virtual Machine. The following interfaces define functionality that can be implemented with more than one set of behavioral characteristics:

The following implementations of these interfaces are included:

In addition, the following classes are also included:

Most of the classes in the proposal were originally inspired by a series of articles called "Java Threads in the Real World" in JavaWorld (09/1998 - 04/1999) by Allen Holub.

(1.5) Interaction With Other Packages

Threading relies only on standard JDK 1.2 (or later) APIs for production deployment. It utilizes the JUnit unit testing framework for developing and executing unit tests, but this is of interest only to developers of the component.

No external configuration files are utilized.

(2) Initial Source of the Package

See the threading subdirectory in jakarta-commons-sandbox.

The proposed package name for the new component is org.apache.commons.threading.

(3) Required Jakarta-Commons Resources

(4) Initial Committers

The initial committers on the Threading component shall be Craig McClanahan.