RFR: 8162563: Fix double checked locking in System.console()

Martin Buchholz martinrb at google.com
Wed Jul 27 05:45:10 UTC 2016

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)

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

On Tue, Jul 26, 2016 at 7:31 PM, David Holmes <david.holmes at oracle.com>

> 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