On Sat, Nov 10, 2018 at 8:51 AM Gary Gregory <[email protected]> wrote:
> On Sat, Nov 10, 2018 at 4:29 AM Oleg Kalnichevski <[email protected]> > wrote: > >> On Fri, 2018-11-09 at 15:36 -0700, Gary Gregory wrote: >> > On Fri, Nov 9, 2018 at 3:33 PM Oleg Kalnichevski <[email protected]> >> >> ... >> >> > >> > > Yes, it is. What would be the point if every single method >> > > synchronizes >> > > on exchangeState instance? >> > > >> > > >> > > >> >> https://github.com/apache/httpcomponents-core/blob/master/httpcore5/src/examples/org/apache/hc/core5/http/examples/AsyncReverseProxyExample.java#L275 >> > >> > >> > OK, I can buy that all of the synchronized blocks are correct and >> > schedule >> > thread access to those ivars. >> > But what about the absence of volatile causing threads to miss >> > updates to >> > fields from other threads? >> > >> >> Java runtime guarantees the state of variables inside synchronized >> block to be consistent for all threads of execution. The reason for >> making variables volatile is to avoid having to use >> expensive synchronization. >> > > Hi Oleg, > > I am looking for confirmation of this in the JLS to make sure my app is on > solid ground. I found: > > "An unlock (synchronized block or method exit) of a monitor > *happens-before* every subsequent lock (synchronized block or method > entry) of that same monitor. And because the *happens-before* relation is > transitive, all actions of a thread prior to unlocking *happen-before* all > actions subsequent to any thread locking that monitor." > > in > https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/package-summary.html#MemoryVisibility > > which I read as JLS-ese of your statement. > > Check? > Hi Oleg, Would you then say that we are missing a synchronized statement in org.apache.hc.core5.http.examples.AsyncReverseProxyExample.IncomingExchangeHandler.handleRequest(...).new FutureCallback() {...}.failed(Exception) ? Gary > > Gary > > >> Oleg >> >> >> > Gary >> > >> > >> > > >> > > >> > > Oleg >> > > >> > > >> > > ----------------------------------------------------------------- >> > > ---- >> > > To unsubscribe, e-mail: [email protected] >> > > For additional commands, e-mail: [email protected] >> > > >> > > >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >>
