Потокобезопасные мультитоны в Java

Учитывая следующий мультитон:

public class Multiton 
{
    private static final Multiton[] instances = new Multiton[...];

    private Multiton(...) 
    {
        //...
    }

    public static Multiton getInstance(int which) 
    {
        if(instances[which] == null) 
        {
            instances[which] = new Multiton(...);
        }

        return instances[which];
    }
}

Как мы можем сделать его потокобезопасным и ленивым без дорогостоящей синхронизации метода getInstance() и спор о блокировке с двойной проверкой? Эффективный способ для синглетонов упоминается здесь, но, похоже, он не распространяется на мультитоны.

11
задан Community 23 May 2017 в 12:09
поделиться