Understand my question or Davids idea?

On Tue, Aug 5, 2008 at 12:52 PM, Dain Sundstrom <[EMAIL PROTECTED]> wrote:

> I think an example would help me understand this more.
>
> -dain
>
>
> On Aug 5, 2008, at 5:23 AM, Karan Malhi wrote:
>
>  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
>>
>
>


-- 
Karan Singh Malhi

Reply via email to