I would check carefully that it is doing what you expect it to do in all
scenarios, and be warned that in the future things may change.  I don't
think Guice provides any guarantees as to the uniqueness of providers it
creates from toProvider(YourProvider.class) bindings.

 sam

On Sun, Jan 8, 2012 at 5:17 PM, surya aditya <[email protected]> wrote:

> Thanks Sam. Your reply now adds clarity to my observations. I have
> made changes, switched to toProvider(SomeProvider.class) as
> requirement is for  unique instances all the times in our case.
>
> Regards,
> Surya.
>
> On Jan 5, 10:09 am, Sam Berlin <[email protected]> wrote:
> > There's nothing special about @Provides vs toProvider.  @Provides is just
> > syntactic sugar for creating a Provider<T> instance and binding it with
> > toProvider(instance).
> >
> > There's nothing built into Guice to make Providers thread-safe.  If your
> > provider has state that is mutated among different calls to
> provider.get(),
> > you need to handle synchronization manually if you expect the provider to
> > be called from different threads.  The same thing applies to the actual
> > objects Guice injects (ie, non-providers).
> >
> > I think the catch is that toProvider(SomeProvider.class) is an unscoped
> > provider binding, so each injection of Provider<T> will create a new
> > instance of the Provider (I think), so there's no shared state since each
> > instance is different.  @Provides is analogous to
> > toProvider(providerInstance), which in turn is analogous to
> > bind(..).toInstance(..), all of which act as singletons and need to be
> > thread-safe.
> >
> > sam
> >
> >
> >
> >
> >
> >
> >
> > On Thu, Jan 5, 2012 at 12:18 AM, surya aditya <[email protected]>
> wrote:
> > > Dear Friends,
> >
> > > In multithreaded environment in multi-core cpu machine, I found
> > > @provides to be not-thread safe. However if I write Provider class and
> > > bind using 'toProvider' then it is showing expected behavior.
> >
> > > Is this my right understanding that @Provides is not thread safe. Has
> > > anybody experienced this before? By not thread safe I mean an instance
> > > of an object is being reused when i use @provides, ofcourse this was
> > > totally unacceptable as the Object has instance variable causing
> > > inconsistencies.
> >
> > > Appreciate feedback.
> >
> > > Peace,
> > > Surya
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "google-guice" group.
> > > To post to this group, send email to [email protected].
> > > To unsubscribe from this group, send email to
> > > [email protected].
> > > For more options, visit this group at
> > >http://groups.google.com/group/google-guice?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "google-guice" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/google-guice?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en.

Reply via email to