एक थ्रेड पढ़ने और कुछ धागे लिखने के साथ एक आदिम प्रकार परिवर्तक पर विचार करें, क्या निम्न कोड सही तरीके से काम करेगा?अस्थिर और रीड-राइट लॉक के रूप में सिंक्रनाइज़ किया गया
यदि यह होगा, तो यह 1 से बेहतर प्रदर्शन प्रदान करता है)। सभी विधियों पर सिंक्रनाइज़ घोषित करना; 2)। एक स्पष्ट ReadWriteLock का उपयोग कर?
क्या यह एक आम पैटर्न है? यदि नहीं, तो इस स्थिति में आमतौर पर किस पैटर्न का उपयोग किया जाता है?
यह वर्तमान में मेरे लिए ठीक काम करता है, लेकिन मुझे लगता है कि अस्थिर और सिंक्रनाइज़ दोनों का उपयोग करने के लिए यह थोड़ा अनावश्यक है।
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--;
}
+1 उत्कृष्ट लेख, ए को किसी भी व्यक्ति के लिए "पढ़ना चाहिए" जो वाष्पशीलता को बेहतर ढंग से समझना चाहता है – Cerber