You're right Reza, it is not unsafe. I confused it with leaking "this" in ctor -- even in that case "final" modifier of the fields impose the happens-before relationship constraint, which is also fine. It needed quite some debate on FreeNode to get things resolved. Sorry for the wrong alarm.
On Tue, Dec 30, 2014 at 3:04 PM, Reza Naghibi < [email protected]> wrote: > Hmm... can you provide a reference or some kind of example showing that a > single threaded read after write is unreliable? I'm thinking if this is > true, huge swaths of programs would be deemed unsafe since read after write > is quite a common memory pattern... :) No? > > > > <div>-------- Original message --------</div><div>From: Volkan Yazıcı < > [email protected]> </div><div>Date:12/30/2014 8:31 AM (GMT-05:00) > </div><div>To: [email protected] </div><div>Cc: > </div><div>Subject: Re: Pattern.rank </div><div> > </div>A related excerpt from the Java Concurrency in Practice: "An object > is in a > predictable, consistent state only after its constructor returns, ..." In > its current form of Pattern: > > Pattern(...) { > ... > this.boost = boost; > this.rank = rank(); > } > > public long rank() { > // access to this.boost > } > > > this.boost might not have been completely initialized when rank() tries to > access to it. > > On Tue, Dec 30, 2014 at 2:14 PM, Reza Naghibi < > [email protected]> wrote: > > > Interesting... you cannot access instance variables in the constructor? > > > > Also, this hasn't been fully implemented. Boost is going to be a DRR > > pattern attribute which will allow 1 pattern to be configured to rank > > higher than another. > > > > > > > > > > <div>-------- Original message --------</div><div>From: Volkan YAZICI < > > [email protected]> </div><div>Date:12/30/2014 4:41 AM > (GMT-05:00) > > </div><div>To: [email protected] </div><div>Cc: > > </div><div>Subject: Pattern.rank </div><div> > > </div>Hi, > > > > I have an objection and a question about Pattern class in Java client. > > > > *Objection:* Pattern.rank() instance method gets called in ctor and > > accesses to instance variables, which might not have been initialized yet > > due to JMM semantics. I propose to fix it as in DMAP-115 > > <https://issues.apache.org/jira/browse/DMAP-115>. > > > > *Question:* Shall we remove boost option on Pattern ctor? It is neither > > used, nor available in .NET client. > > > > Best. > > >
