JThread Web Page
Introduction
JThread is a software tool to externalize Java threads and to manage
the process to stop and restart running threads in Java applications. It
works with Java persistence or migration systems to provide thread persistence
and migration in Java. JThread includes a class file post-processor,
a JThread package API, and facilitating software. Because neither
the Java compiler nor the JVM needs to be modified, JThread is compatible
with any Java compilers, interpreters and platforms.
The JThread project started in autumn 1997. After spent about
half a year investigating different approaches and doing experiments transforming
Java source code by hand, we came up with the idea to systematically
collapse and rebuild Java execution state by processing Java code. The
preliminary performance measurements on hand translated code were very
promising. Since autumn 1998, we have been developing the class file post
processor and its applications. In early 1999, we built our first prototype
for persistent thread using ODI's
PSE/PSE Pro as the persistent engine. Our second prototype was developed
in late 1999 for thread migration based on the Voyager
framework. In early 2000, the third prototype using Java serialization
was functional. It successfully saved and restarted several multithreading
programs with complex synchronization states. The socket prototype was
built in spring 2000 with several more thread migration demonstration applications.
JThread package
-
JThread provides APIs
for applications to choose state saving point and object binding semantics.
-
Their implementations can be downloaded as jthread.jar
.
-
The class file post-processor rewrites application's byte code for saving
or migrating thread:
-
stream.jar contains
the Serialization version of post-processor.
-
voyager.jar contains
the Voyager version of post-processor.
-
socket.jar contains
the socket version of post-processor.
-
pse.jar contains
the PSE version of post-processor.
Demos
-
Persistent thread
-
Mobile thread (Voyager)
-
Mobile thread (socket)