CINXE.COM
jsr166z.forkjoin
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!--NewPage--> <HTML> <HEAD> <!-- Generated by javadoc (build 1.6.0-dp) on Sat Oct 13 14:58:15 PDT 2007 --> <TITLE> jsr166z.forkjoin </TITLE> <META NAME="date" CONTENT="2007-10-13"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style"> <SCRIPT type="text/javascript"> function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { parent.document.title="jsr166z.forkjoin"; } } </SCRIPT> <NOSCRIPT> </NOSCRIPT> </HEAD> <BODY BGCOLOR="white" onload="windowTitle();"> <HR> <!-- ========= START OF TOP NAVBAR ======= --> <A NAME="navbar_top"><!-- --></A> <A HREF="#skip-navbar_top" title="Skip navigation links"></A> <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> <TR> <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A NAME="navbar_top_firstrow"><!-- --></A> <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> <TR ALIGN="center" VALIGN="top"> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../jsr166z/forkjoin/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> </TR> </TABLE> </TD> <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> </EM> </TD> </TR> <TR> <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> PREV PACKAGE NEXT PACKAGE</FONT></TD> <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../index.html?jsr166z/forkjoin/package-summary.html" target="_top"><B>FRAMES</B></A> <A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A> <SCRIPT type="text/javascript"> <!-- if(window==top) { document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>'); } //--> </SCRIPT> <NOSCRIPT> <A HREF="../../allclasses-noframe.html"><B>All Classes</B></A> </NOSCRIPT> </FONT></TD> </TR> </TABLE> <A NAME="skip-navbar_top"></A> <!-- ========= END OF TOP NAVBAR ========= --> <HR> <H2> Package jsr166z.forkjoin </H2> A fine-grained parallel computation framework. <P> <B>See:</B> <BR> <A HREF="#package_description"><B>Description</B></A> <P> <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> <B>Interface Summary</B></FONT></TH> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ForkJoinExecutor.html" title="interface in jsr166z.forkjoin">ForkJoinExecutor</A></B></TD> <TD>An object that executes <A HREF="../../jsr166z/forkjoin/ForkJoinTask.html" title="class in jsr166z.forkjoin"><CODE>ForkJoinTask</CODE></A> computations.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ForkJoinPool.ForkJoinWorkerThreadFactory.html" title="interface in jsr166z.forkjoin">ForkJoinPool.ForkJoinWorkerThreadFactory</A></B></TD> <TD>Factory for creating new ForkJoinWorkerThreads.</TD> </TR> </TABLE> <P> <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> <B>Class Summary</B></FONT></TH> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/AsyncAction.html" title="class in jsr166z.forkjoin">AsyncAction</A></B></TD> <TD>Resultless ForkJoinTasks with explicit completions.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/CyclicAction.html" title="class in jsr166z.forkjoin">CyclicAction</A></B></TD> <TD>A computation that is broken into a series of task executions, each separated by a TaskBarrier arrival.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ForkJoinPool.html" title="class in jsr166z.forkjoin">ForkJoinPool</A></B></TD> <TD>Host for a group of ForkJoinWorkerThreads that perform ForkJoinTasks.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ForkJoinPool.DefaultForkJoinWorkerThreadFactory.html" title="class in jsr166z.forkjoin">ForkJoinPool.DefaultForkJoinWorkerThreadFactory</A></B></TD> <TD>The default ForkJoinWorkerThreadFactory, used unless overridden in ForkJoinPool constructors.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ForkJoinTask.html" title="class in jsr166z.forkjoin">ForkJoinTask<V></A></B></TD> <TD>Abstract base class for tasks that run within a ForkJoinPool.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ForkJoinWorkerThread.html" title="class in jsr166z.forkjoin">ForkJoinWorkerThread</A></B></TD> <TD>A thread that is internally managed by a ForkJoinPool to execute ForkJoinTasks.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/LinkedAsyncAction.html" title="class in jsr166z.forkjoin">LinkedAsyncAction</A></B></TD> <TD>Resultless ForkJoinTasks with explicit completions, that may be linked in parent-child relationships.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/Ops.html" title="class in jsr166z.forkjoin">Ops</A></B></TD> <TD>Interfaces and utilities describing per-element operations used within parallel methods on aggregates.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/Ops.CompoundMapper.html" title="class in jsr166z.forkjoin">Ops.CompoundMapper<T,U,V></A></B></TD> <TD>A composite mapper that applies a second mapper to the results of applying the first one</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/Ops.DoubleMaxReducer.html" title="class in jsr166z.forkjoin">Ops.DoubleMaxReducer</A></B></TD> <TD>A reducer returning the maximum of two double elements, using the given comparator</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/Ops.DoubleMinReducer.html" title="class in jsr166z.forkjoin">Ops.DoubleMinReducer</A></B></TD> <TD>A reducer returning the minimum of two double elements, using the given comparator</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/Ops.IntMaxReducer.html" title="class in jsr166z.forkjoin">Ops.IntMaxReducer</A></B></TD> <TD>A reducer returning the maximum of two int elements, using the given comparator</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/Ops.IntMinReducer.html" title="class in jsr166z.forkjoin">Ops.IntMinReducer</A></B></TD> <TD>A reducer returning the minimum of two int elements, using the given comparator</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/Ops.LongMaxReducer.html" title="class in jsr166z.forkjoin">Ops.LongMaxReducer</A></B></TD> <TD>A reducer returning the maximum of two long elements, using the given comparator</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/Ops.LongMinReducer.html" title="class in jsr166z.forkjoin">Ops.LongMinReducer</A></B></TD> <TD>A reducer returning the minimum of two long elements, using the given comparator</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/Ops.MaxReducer.html" title="class in jsr166z.forkjoin">Ops.MaxReducer<T></A></B></TD> <TD>A reducer returning the maximum of two elements, using the given comparator, and treating null as less than any non-null element.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/Ops.MinReducer.html" title="class in jsr166z.forkjoin">Ops.MinReducer<T></A></B></TD> <TD>A reducer returning the minimum of two elements, using the given comparator, and treating null as greater than any non-null element.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/Ops.NaturalMaxReducer.html" title="class in jsr166z.forkjoin">Ops.NaturalMaxReducer<T extends Comparable<? super T>></A></B></TD> <TD>A reducer returning the maximum of two Comparable elements, treating null as less than any non-null element.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/Ops.NaturalMinReducer.html" title="class in jsr166z.forkjoin">Ops.NaturalMinReducer<T extends Comparable<? super T>></A></B></TD> <TD>A reducer returning the minimum of two Comparable elements, treating null as less than any non-null element.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelArray.html" title="class in jsr166z.forkjoin">ParallelArray<T></A></B></TD> <TD>An array supporting parallel operations.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelArray.WithBounds.html" title="class in jsr166z.forkjoin">ParallelArray.WithBounds<T></A></B></TD> <TD>A restriction of parallel array operations to apply only within a given range of indices.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelArray.WithDoubleMapping.html" title="class in jsr166z.forkjoin">ParallelArray.WithDoubleMapping<T></A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements to doubles, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelArray.WithFilter.html" title="class in jsr166z.forkjoin">ParallelArray.WithFilter<T></A></B></TD> <TD>A restriction of parallel array operations to apply only to elements for which a selector returns true</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelArray.WithIntMapping.html" title="class in jsr166z.forkjoin">ParallelArray.WithIntMapping<T></A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements to ints, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelArray.WithLongMapping.html" title="class in jsr166z.forkjoin">ParallelArray.WithLongMapping<T></A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements to longs, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelArray.WithMapping.html" title="class in jsr166z.forkjoin">ParallelArray.WithMapping<T,U></A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelDoubleArray.html" title="class in jsr166z.forkjoin">ParallelDoubleArray</A></B></TD> <TD>An array of doubles supporting parallel operations.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelDoubleArray.WithBounds.html" title="class in jsr166z.forkjoin">ParallelDoubleArray.WithBounds</A></B></TD> <TD>A restriction of parallel array operations to apply only within a given range of indices.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelDoubleArray.WithDoubleMapping.html" title="class in jsr166z.forkjoin">ParallelDoubleArray.WithDoubleMapping</A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements to doubles, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelDoubleArray.WithFilter.html" title="class in jsr166z.forkjoin">ParallelDoubleArray.WithFilter</A></B></TD> <TD>A restriction of parallel array operations to apply only to elements for which a selector returns true</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelDoubleArray.WithIntMapping.html" title="class in jsr166z.forkjoin">ParallelDoubleArray.WithIntMapping</A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements to ints, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelDoubleArray.WithLongMapping.html" title="class in jsr166z.forkjoin">ParallelDoubleArray.WithLongMapping</A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements to longs, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelDoubleArray.WithMapping.html" title="class in jsr166z.forkjoin">ParallelDoubleArray.WithMapping<U></A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelIntArray.html" title="class in jsr166z.forkjoin">ParallelIntArray</A></B></TD> <TD>An array of ints supporting parallel operations.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelIntArray.WithBounds.html" title="class in jsr166z.forkjoin">ParallelIntArray.WithBounds</A></B></TD> <TD>A restriction of parallel array operations to apply only within a given range of indices.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelIntArray.WithDoubleMapping.html" title="class in jsr166z.forkjoin">ParallelIntArray.WithDoubleMapping</A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements to doubles, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelIntArray.WithFilter.html" title="class in jsr166z.forkjoin">ParallelIntArray.WithFilter</A></B></TD> <TD>A restriction of parallel array operations to apply only to elements for which a selector returns true</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelIntArray.WithIntMapping.html" title="class in jsr166z.forkjoin">ParallelIntArray.WithIntMapping</A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements to ints, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelIntArray.WithLongMapping.html" title="class in jsr166z.forkjoin">ParallelIntArray.WithLongMapping</A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements to longs, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelIntArray.WithMapping.html" title="class in jsr166z.forkjoin">ParallelIntArray.WithMapping<U></A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelLongArray.html" title="class in jsr166z.forkjoin">ParallelLongArray</A></B></TD> <TD>An array of longs supporting parallel operations.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelLongArray.WithBounds.html" title="class in jsr166z.forkjoin">ParallelLongArray.WithBounds</A></B></TD> <TD>A restriction of parallel array operations to apply only within a given range of indices.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelLongArray.WithDoubleMapping.html" title="class in jsr166z.forkjoin">ParallelLongArray.WithDoubleMapping</A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements to doubles, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelLongArray.WithFilter.html" title="class in jsr166z.forkjoin">ParallelLongArray.WithFilter</A></B></TD> <TD>A restriction of parallel array operations to apply only to elements for which a selector returns true</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelLongArray.WithIntMapping.html" title="class in jsr166z.forkjoin">ParallelLongArray.WithIntMapping</A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements to ints, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelLongArray.WithLongMapping.html" title="class in jsr166z.forkjoin">ParallelLongArray.WithLongMapping</A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements to longs, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/ParallelLongArray.WithMapping.html" title="class in jsr166z.forkjoin">ParallelLongArray.WithMapping<U></A></B></TD> <TD>A modifier for parallel array operations to apply to mappings of elements, not to the elements themselves</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/RecursiveAction.html" title="class in jsr166z.forkjoin">RecursiveAction</A></B></TD> <TD>Recursive resultless ForkJoinTasks.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/RecursiveTask.html" title="class in jsr166z.forkjoin">RecursiveTask<V></A></B></TD> <TD>Recursive result-bearing ForkJoinTasks.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD WIDTH="15%"><B><A HREF="../../jsr166z/forkjoin/TaskBarrier.html" title="class in jsr166z.forkjoin">TaskBarrier</A></B></TD> <TD>A synchronization barrier for ForkJoinTasks.</TD> </TR> </TABLE> <P> <A NAME="package_description"><!-- --></A><H2> Package jsr166z.forkjoin Description </H2> <P> A fine-grained parallel computation framework. ForkJoinTasks and their related support classes provide a very efficient basis for obtaining platform-independent parallel speed-ups of computation-intensive operations. They are not a full substitute for the kinds of arbitrary processing supported by Executors or Threads. However, when applicable, they typically provide significantly greater performance on multiprocessor platforms. <p> Candidates for fork/join processing mainly include those that can be expressed using parallel divide-and-conquer techniques: To solve a problem, break it in two (or more) parts, and then solve those parts in parallel, continuing on in this way until the problem is too small to be broken up, so is solved directly. The underlying <em>work-stealing</em> framework makes subtasks available to other threads (normally one per CPU), that help complete the tasks. In general, the most efficient ForkJoinTasks are those that directly implement this algorithmic design pattern. <p>While direct implementation of parallel divide-and-conquer algorithms is often straightforward, it can also be tedious and code-intensive. For this reason, a number of solution "templates" are available for common kinds of operations on lists and arrays: applying some operation to all elements, combining elements according to some function, and so on. In this preliminary release, these are presented via some interfaces describing the associated code bodies in TaskTypes, along with an evolving set of implementations for lists and arrays of objects and scalars. <P> <P> <DL> </DL> <HR> <!-- ======= START OF BOTTOM NAVBAR ====== --> <A NAME="navbar_bottom"><!-- --></A> <A HREF="#skip-navbar_bottom" title="Skip navigation links"></A> <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> <TR> <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A NAME="navbar_bottom_firstrow"><!-- --></A> <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> <TR ALIGN="center" VALIGN="top"> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../jsr166z/forkjoin/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> </TR> </TABLE> </TD> <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> </EM> </TD> </TR> <TR> <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> PREV PACKAGE NEXT PACKAGE</FONT></TD> <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../index.html?jsr166z/forkjoin/package-summary.html" target="_top"><B>FRAMES</B></A> <A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A> <SCRIPT type="text/javascript"> <!-- if(window==top) { document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>'); } //--> </SCRIPT> <NOSCRIPT> <A HREF="../../allclasses-noframe.html"><B>All Classes</B></A> </NOSCRIPT> </FONT></TD> </TR> </TABLE> <A NAME="skip-navbar_bottom"></A> <!-- ======== END OF BOTTOM NAVBAR ======= --> <HR> </BODY> </HTML>