Question:- What would be the use-case to call an asynchronous method and
expect synchronous behavior?

On 8/5/08, David Blevins <[EMAIL PROTECTED]> wrote:
>
> Had an interesting idea I think I might propose to the EJB 3.1 Expert
> Group.  Wanted to run it by here as I can't seem to think of a good name for
> it.
>
> Essentially, many people who want async methods don't actually want fire
> and forget.  We've already addressed this somewhat with the ability to
> return a container controlled java.util.concurrent.Future instance to the
> async method caller.  It doesn't really address the parallelization scenario
> where they want to call several async methods and wait for them all to
> complete.  Holding onto a handful of Future objects without the benefit of
> something like the NIO Selector API (which is still pretty terrible) is just
> not going to cut it.
>
> The idea is to introduce something like a @Resynchronize annotation that
> could be applied to business methods on the bean class.  A business method
> or callback with the @Resynchronize annotation would block until all the all
> the async methods it calls have completed.  So for example:
>
>  @Resynchronize
>  public void goTeam() {
>     fooBean.red(); // async method
>     barBean.green(); // async method
>     bazBean.blue();
>  }
>
> At the start of the goTeam() method the container would ready itself to
> track async calls.  When the bean code calls the red() and green() methods
> the container will track those calls and when the goTeam() method returns to
> the container, the container will block the thread till both red() and
> green() complete.  When both are completed, the container will return
> control to the caller of goTeam().
>
> Internally if we had something like a CountDownLatch that could count up as
> well as down, we'd be set.  Any ideas there?
>
> Also, not sure @ Resynchronize is the best annotation name.
>
> -David
>
>


-- 
Karan Singh Malhi

Reply via email to