<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<title>JSR 166 Snapshot Introduction.</title>
</head>
<body bgcolor="#ffffee" vlink="#0000aa" link="#cc0000">
<h1>JSR 166 Snapshot Introduction.</h1>
by <a href="http://gee.cs.oswego.edu/dl">Doug Lea</a>
<p>
To join a mailing list discussing this JSR, go to:
<A HREF="http://altair.cs.oswego.edu/mailman/listinfo/concurrency-interest"> http://altair.cs.oswego.edu/mailman/listinfo/concurrency-interest</A> .
<p>
<em>
Disclaimer - This prototype is experimental code developed as part of
JCP JSR166 and made available to the developer community for use
as-is. It is not a supported product. Use it at your own risk. The
specification, language and implementation are subject to change as a
result of your feedback. Because these features have not yet been
approved for addition to the Java language, there is no schedule for
their inclusion in a product.
</em>
<p> JSR166 introduces package <tt>java.util.concurrent</tt> containing
utility classes commonly useful in concurrent programming. Like
package java.util, it includes a few small standardized extensible
frameworks, as well as some classes that provide useful functionality
and are otherwise tedious or difficult to implement. JSR-166 focusses
on breadth, prviding critical functionality useful across a wide range
of concurrent programming styles and applications, ranging from
low-level atomic operations, to customizable locks and synchronization
aids, to various concurrent data structures, to thread pools.
Descriptions of the main components may be found in the associated
package documentation.
<p> JSR166 also includes a few changes and additions in packages
outside of java.util.concurrent. Here are brief descriptions.
<h2>Queues</h2>
A basic (nonblocking) {@link java.util.Queue} interface extending
java.util.Collection is introduced into java.util. Existing class
java.util.LinkedList is adapted to support Queue, and a new
non-thread-safe {@link java.util.PriorityQueue} is added.
<h2>Uncaught Exception Handlers</h2>
The java.lang.Thread class is modified to allow per-thread
installation of handlers for uncaught exceptions. Ths optionally
disassociates these handlers from ThreadGroups, which has proven to be
too inflexible in many multithreaded programs. (Note that the
combination of features in JSR166 make ThreadGroups even less likely
to be used in most programs. Perhaps they will eventually be
deprecated.)
<h2>High precision timing</h2>
Method <tt>nanoTime</tt> is added to <tt>java.lang.System</tt>. It
provides a high-precision timing facility that is distinct from
and uncoordinated with <tt>System.currentTimeMillis</tt>.
<h2>Removing ThreadLocals</h2>
The java.lang.ThreadLocal class now supports a means to remove a
ThreadLocal, which is needed in some thread-pool and worker-thread
designs.
<hr>
<address><A HREF="http://gee.cs.oswego.edu/dl">Doug Lea</A></address>
</body>
</html>