Java并发:线程之间的共享内存
假设我有一个单例类(任何类都可以获得该实例):
class data
{
Color sun = "WHITE";
String luminance = "HIGH";
int age = 25;
double speed = 52.5
...
}
假设我有几个线程可以引用这个类的Singleton实例。我正试图找到一种方法,在每个字段的基础上同步get/set
如果我对每个变量都有一个同步的getter/setter方法,那么这将基本上“锁定”整个类(而不是单个字段),直到该方法被设置为止
有没有办法让这些线程只锁定实例值,而不是锁定整个类
--编辑:我为庞大的单对象数据道歉
数据实际上存储在几个类中。每个对象最多只有20-25个成员
# 1 楼答案
不,它会锁定整个物体,但这可能就是你的意思
选项1
如果你有足够的内存,你可以简单地拥有一个
Object[] locks = new Object[1000];
,你可以为它获取锁选项2
另一个选项是将所有字段标记为
volatile
。这将至少确保读取和写入是原子执行的选项3
看看} package 中
AtomicLong
,AtomicReference
,AtomicBoolean
。。。等等在^{