|  | <h3>Futures for Concurrency</h3> | 
|  |  | 
|  | <p> | 
|  | This milestone includes a new, provisional API for futures.  Futures allow easier handling of | 
|  | concurrency and synchronization in multi-threaded and/or distributed systems, | 
|  | by introducing an object (the future result aka IFuture) that serves as a proxy for a result that | 
|  | is not known, because the computation of the result is not (yet) complete. | 
|  | </p> | 
|  | <p> | 
|  | For example, here is an API that would normally return an Integer | 
|  | as the result of some synchronous computation | 
|  | </p> | 
|  | <p> | 
|  | <blockquote> | 
|  | <pre> | 
|  | // foo() may be a long-running operation, and if so will block in order to | 
|  | // synchronously return the result | 
|  | Integer result = foo(); | 
|  | </pre> | 
|  | </blockquote> | 
|  | With futures, foo() could instead return an IFuture, and thereby guarantee | 
|  | that foo() would not block indefinitely. | 
|  | <blockquote> | 
|  | <pre> | 
|  | // foo will return the future immediately and operation will complete | 
|  | // asynchronously | 
|  | IFuture future = foo(); | 
|  | // do other things while operation is completed asynchronously | 
|  | ... | 
|  | Integer result = (Integer) future.get(); | 
|  | </pre> | 
|  | </blockquote> | 
|  | </p> | 
|  | See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=253777">bug 253777</a> | 
|  | to comment on or contribute to the ongoing work in this area.  Note that work is ongoing | 
|  | to integrate this API with the <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=261952">Jobs API</a>, as well as | 
|  | integration with the futures support in JRE 1.5. | 
|  |  | 
|  |  |