RFR: 8162563: Fix double checked locking in System.console()
David Holmes
david.holmes at oracle.com
Wed Jul 27 06:13:31 UTC 2016
On 27/07/2016 3:45 PM, Martin Buchholz wrote:
> Hi David,
>
> I didn't even look at Console.java! I just fixed the double-checked
> locking in System.java.
>
> Looking now at Console.cons, that is NOT safely statically initialized:
>
> SharedSecrets.setJavaIOAccess(new JavaIOAccess() {
> public Console console() {
> if (istty()) {
> if (cons == null)
> cons = new Console();
> return cons;
> }
> return null;
> }
>
> (but it's currently safe because only System.java accesses it)
The above code is in a static initialization block.
Cheers,
David
> Now perhaps Console.cons is deserving of its own proper init-once code.
> Perhaps we don't need a static Console field in both classes Console and
> System?
>
>
> On Tue, Jul 26, 2016 at 7:31 PM, David Holmes <david.holmes at oracle.com
> <mailto:david.holmes at oracle.com>> wrote:
>
> On 27/07/2016 6:35 AM, Martin Buchholz wrote:
>
> Hi Xueming,
>
> I'd like you to do a wee code review,
>
> http://cr.openjdk.java.net/~martin/webrevs/openjdk9/Console-double-checked-locking/
>
>
> Humour me - where is the bug? We're simply retrieving the existing
> Console singleton that is safely published through static
> initialization. All this seems to do is improve the performance if a
> race occurs.
>
> AFAICS the use of locking here isn't necessary at all.
>
> Cheers,
> David
>
>
More information about the core-libs-dev
mailing list