Fine-grained concurrency for the JVM:
creating and synchronizing between threads is a
relatively `heavyweight' operation in Java. In many systems Java
threads map directly onto threads supported by the OS, or at the very
least require resources to be allocated in the form of
space for the stack. It's therefore only worth creating a thread if
there's a substantial amount of work for it to do.
This project proposes extending a JVM with much lighter weight
threads, perhaps based on simple fork and join
operations following a recent proposal by Doug Lea.
You'd have to consider how to provide these operations (e.g. new
bytecodes or via method calls), how to represent lightweight threads
and how to schedule them. We have a 4-processor Solaris machine and a
number of 2-processor Linux machines in the lab which could be used to
allow genuine concurrency.
|