[cdi-dev] Async events. We need ideas to improve CDI-499
Mark Struberg
struberg at yahoo.de
Tue Feb 10 04:53:05 EST 2015
purely technically: How do you manage to not spawn a new thread if you don't like to wait for the task to complete?
Wonder how that would work...
LieGrue,
strub
> On Tuesday, 10 February 2015, 10:50, Jozef Hartinger <jharting at redhat.com> wrote:
> > Async is not about a parallel thread. It is about fire() not waiting
> until an observer finishes. Transactional observers are async already.
> No need to make things more complicated by involving a "parallel
> thread".
>
>
> On 02/10/2015 10:42 AM, Mark Struberg wrote:
>> No they are not async in the sense that they get executed in a parallel
> thread. That simply won't work. Think about
> TransactionPhase.BEFORE_COMPLETION.
>> There is a huge difference between 'it will get called on the same
> thread but I have no control _when_' and 'it will get called on a
> totally new thread'-
>>
>> For the TransactionPhase it is the first case imo.
>>
>> LieGrue,
>> strub
>>
>>
>>
>>
>>> On Tuesday, 10 February 2015, 10:30, Jozef Hartinger
> <jharting at redhat.com> wrote:
>>>> T ransactional observers are by definition async so they should
> behave
>>> the same no matter if fired with fire() or fireAsync().
>>>
>>>
>>> On 02/10/2015 09:13 AM, Mark Struberg wrote:
>>>> Oh one more thing I found which is most probably broken or
> totally changes
>>> the behaviour
>>>> 8.) All observers with transactionPhase != IN_PROGRESS
>>>>
>>>> LieGrue,
>>>> strub
>>>>
>>>>
>>>>
>>>>
>>>>> On Tuesday, 10 February 2015, 8:58, Mark Struberg
>>> <struberg at yahoo.de> wrote:
>>>>>> Hi José!
>>>>> Backward compatibility is perfectly fine with both
> approaches. People
>>> can use
>>>>> BeanManager#fire() instead of the newly proposed
>>> BeanManager#fireAsync().
>>>>>
>>>>> My point is that many people will simply not be able to use
> fireAsync()
>>> because
>>>>> as a framework developer you really need to code defensive.
> Without an
>>> explicit
>>>>> opt-in on observer side fireAsync() can basically only be
> used in
>>> situations
>>>>> where you _exactly_ know all your observers...
>>>>>
>>>>> An No @Async annotation would also be nice as it could not
> only be
>>> used at
>>>>> @Observes but also for @Event
>>>>>
>>>>> @Inject
>>>>> @Async
>>>>>
>>>>> @Event
>>>>>
>>>>> private Event<UserLoggedIn> userLoggedInEventSource;
>>>>>
>>>>>
>>>>> The benefit of an own @Async annotation over extending e.g.
> the @Event
>>>>> annotation is that it would be perfectly backward compatible.
> This code
>>> would
>>>>> also run on CDI-1.0 .. 1.2 containers (as all annotations
> which are not
>>>>> available on the classpath will simply be ignored by the JVM.
>>>>>
>>>>> LieGrue,
>>>>> strub
>>>>>
>>>> _______________________________________________
>>>> cdi-dev mailing list
>>>> cdi-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>>>>
>>>> Note that for all code provided on this list, the provider
> licenses the
>>> code under the Apache License, Version 2
>>> (http://www.apache.org/licenses/LICENSE-2.0.html). For all other ideas
> provided
>>> on this list, the provider waives all patent and other intellectual
> property
>>> rights inherent in such information.
>>>
>
More information about the cdi-dev
mailing list