Рассмотрим переменную примитивного типа с большим количеством потоков чтения и записи нескольких потоков, будет ли следующий код работать правильно?
Если да, обеспечивает ли он лучшую производительность, чем 1). объявление синхронизировано по всем методам; 2). используя явный ReadWriteLock?
Это обычная модель? Если нет, какой шаблон обычно используется в этой ситуации?
В настоящее время это хорошо работает для меня, но я чувствую, что немного избыточно использовать как volatile, так и синхронизированные.
private volatile int value = 1;
public void func1()
{
if (value == 1) {
// do something
}
}
public void func2()
{
if (value == 2) {
// do something
}
}
public void func3()
{
if (value == 3) {
// do something
}
}
public synchronized void increase()
{
if (value < 10) value++;
}
public synchronized void decrease()
{
if (value > 0) value--;
}