| <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. |
| |
| |