Next: Experimental Evaluation
Up: System Components and Implementation
Previous: Bytecode Interpretation
Figure 11:
Multithreading modules and interfaces.
Modules are shown as blocks divided by horizontal planes
representing interfaces.
|
To maximize flexibility, Jupiter uses two levels of interfaces for threading
and synchronization, shown in Figure 11.
The high-level interfaces, called Thread and Monitor (plus the
corresponding Sources), provide the full Java concurrency semantics.
The low-level interfaces, called ThinThread, Mutex, and
Condition, provide the minimal semantics required by Java.
These low-level interfaces are referred to collectively as
the ThinThreads interface, which provides a small subset of
the POSIX threads semantics [17].
The high- and low-level interfaces are complimentary in several ways:
- ThinThreads encapsulates the thread library beneath Jupiter.
Thread and Monitor encapsulate the threading needs of the Java
program running on top of Jupiter.
- ThinThreads provides the minimal requirements to make
implementing Java threads possible.
Thread and Monitor provide the maximum support to make
implementing Java threads simple.
- ThinThreads is designed so that the implementation code
which connects to the underlying thread library can be trivial.
Thread and Monitor are designed so that the client code which
uses them to implement Java threads can be trivial.
Separating the Java concurrency semantics from the semantics of the
underlying thread library makes threading and synchronization modules
easier to implement and modify.
Next: Experimental Evaluation
Up: System Components and Implementation
Previous: Bytecode Interpretation
Tarek S. Abdelrahman
2002-05-27