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