考虑一个具有大量线程读取和少量线程写入的原始类型变量,以下代码会正常工作吗?
如果可以,它是否提供比 1) 更好的性能。在所有方法上声明同步;2)。使用显式读写锁?
这是一种常见的模式吗?如果不是,在这种情况下通常使用什么模式?
这目前对我来说很好,但我觉得同时使用 volatile 和 synchronized 有点多余。
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--;
}