Когда используется синхронизация, это влияет на производительность. Можно ли использовать 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;
}
}
Пожалуйста, дайте мне знать, в каком случае это может сломаться?