Apache BeanFlow is a component of the ServiceMix Incubator product that I found useful for asychronous tasks.

BeanFlow is a lightweight Java library for building workflows using beans to orchestrate events.

I downloaded the ServiceMix source code and included just the org.apache.servicemix.beanflow package in the texai subversion code repository. The problem that I wanted to solve is when a knowledge base object query, not specifying the primary key (term id), is sent to every KB shard, and only one of them contains the answer. Ideally, the shard queries are performed in parallel and when a query returns a non-null result, the remaining running queries are cancelled.

I extended the JoinSupport class to provide an activity which joins on the first non-null result completion among the collection
of child callable activities. The remaining activities, if any, are cancelled.

Here is a link to the source code at SourceForge:
org.apache.servicemix.beanflow.JoinFirstCallableActivityResult.java

And here is a SourceForge link to the JUnit test class which demonstrates its use:
org/apache/servicemix/beanflow/MyBeanFlowTest.java