энергозависимая синхронизированная комбинация для повышения производительности

Когда используется синхронизация, это влияет на производительность. Можно ли использовать volatile в сочетании с synchronized, чтобы снизить нагрузку на производительность? Например, экземпляр Counter будет совместно использоваться многими потоками, и каждый поток может получить доступ к общедоступным методам Counter. В приведенном ниже коде volatile используется для геттера, а synchronized — для сеттера

public class Counter
{
    private volatile int count;

    public Counter()
    {
        count = 0;
    }

    public int getCount()
    {
        return count;
    }

    public synchronized void increment()
    {
        ++count;
    }   
}

Пожалуйста, дайте мне знать, в каком случае это может сломаться?

12
задан Arne 27 July 2012 в 04:28
поделиться