【发布时间】:2010-11-27 02:40:32
【问题描述】:
考虑一个有大量线程读取和少量线程写入的原始类型变量,下面的代码会正常工作吗?
如果可以,它是否提供比 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--;
}
【问题讨论】:
标签: java concurrency volatile synchronized readwritelock