On Thu, Jan 5, 2017 at 11:39 PM Martin Kouba <mkouba@redhat.com> wrote:
Dne 5.1.2017 v 22:56 Laird Nelson napsal(a):
> Suppose I have the standard SeContainer "block" like this:
>
> try (final SeContainer container = initializer.initialize()) {
>   // stuff goes here
> }
>
> Inside that block, may I start threads and have them do things with the
> container variable?

I believe you can. It should be safe to use an initialized container
instance from multiple threads. The spec does not explicitly mention
this but it can't cover every possibility ;-)

Sure; that's fair.  I guess…maybe there's a blanket statement that could be added to the specification?  Something that indicates that unless otherwise indicated, core CDI objects (not sure offhand what these are, but things like BeanManager, CDI, Instance, Context, etc.) used in a Java SE context are safe for concurrent use by multiple threads.

To state the obvious, I'm not a fan of "try it; see if it works", since I don't know what any given implementation is going to do.
 
You can create a new thread from within a managed bean. BUT there are
few snags you should be aware of. I.e. in Java EE you should not create
your own threads

Sure; of course not.
 
and if you do, only dependent and application context
will work as usual.

Right.
 
See also http://weld.cdi-spec.org/documentation/#0

Thanks.
 
> Should the specification include language related to concurrency in
> these matters and others?

I think that would require a great deal of effort. But feel free to
create a spec issue for CDI 2.1+.

OK.  A blanket statement or two, so that exceptional cases can then be documented on a case-by-case basis would seem to be the way to go here.  I'll file a spec issue.  Thanks for your time.

Best,
Laird