假設我有一個Singleton類之間(任何類可以獲取實例):Java併發:共享內存線程
class data
{
Color sun = "WHITE";
String luminance = "HIGH";
int age = 25;
double speed = 52.5
...
}
假設我有幾個線程得到這一類的Singleton實例的引用。我試圖找出一種方法來同步基於PER FIELD的獲取/設置。
如果我對每個變量都有一個同步的getter/setter方法,那麼在設置該方法之前,這將基本上「鎖定」整個類(而不是單個字段)。
有沒有辦法讓這些線程只鎖定實例值而不是鎖定整個類?
- 編輯:我很抱歉的巨大的一個對象數據。
數據實際上存儲在幾個類中。每個對象最多隻有20-25個成員。
我覺得我的頭會爆炸。你不只是減少可變性?例如。 *刪除*鎖定巨大的單片icky對象的需要。 – 2010-11-18 22:49:01
我的臉已經融化了,想着這個。 – MattC 2010-11-18 22:51:29
如果您共享一把鎖,您是否確定有性能瓶頸?請注意,您可以在大約2 ms內跨多個線程鎖定對象1000次。基本上,在你使你的應用程序更加強化之前,你是否測量過這個瓶頸或者你在猜測? – 2010-11-18 23:02:36