Рассмотрим переменную примитивного типа с большим количеством потоков чтения и несколькими потоками записи, будет ли следующий код работать правильно?
Если да, обеспечивает ли он лучшую производительность, чем 1). объявление синхронизированным для всех методов; 2). с использованием явного ReadWriteLock?
Это обычный шаблон? Если нет, то какой шаблон обычно используется в этой ситуации?
В настоящее время это работает для меня, но я считаю, что использовать как энергозависимую, так и синхронизированную информацию немного избыточно.
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--;
}