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