मैं केवल थ्रेडिंग परिप्रेक्ष्य में पूछ रहा हूं ... शायद कई बार जवाब दिया गया है लेकिन कृपया इसे समझने में मेरी सहायता करें।स्टेटिक वैरिएबल बनाम अस्थिर
संदर्भ के साथ यहाँ Volatile Vs Static in java
पोस्ट करने के लिए एक स्थिर चर मूल्य भी सभी धागे के लिए एक मूल्य होने जा रहा है पूछ, तो क्यों हम अस्थिर के लिए जाना चाहिए? मैं निम्नलिखित उदाहरण पाया:
public class VolatileExample {
public static void main(String args[]) {
new ExampleThread("Thread 1 ").start();
new ExampleThread("Thread 2 ").start();
}
}
class ExampleThread extends Thread {
private static volatile int testValue = 1;
public ExampleThread(String str){
super(str);
}
public void run() {
for (int i = 0; i < 3; i++) {
try {
System.out.println(getName() + " : "+i);
if (getName().compareTo("Thread 1 ") == 0)
{
testValue++;
System.out.println("Test Value T1: " + testValue);
}
if (getName().compareTo("Thread 2 ") == 0)
{
System.out.println("Test Value T2: " + testValue);
}
Thread.sleep(1000);
} catch (InterruptedException exception) {
exception.printStackTrace();
}
}
}
}
आउटपुट:
Thread 1 : 0
Test Value T1: 2
Thread 2 : 0
Test Value T2: 2
Thread 1 : 1
Test Value T1: 3
Thread 2 : 1
Test Value T2: 3
Thread 1 : 2
Test Value T1: 4
Thread 2 : 2
Test Value T2: 4
अगर मैं testValue से स्थिर निकालने के लिए, प्राप्त परिणाम:
Thread 1 : 0
Test Value T1: 2
Thread 2 : 0
Test Value T2: 1
Thread 1 : 1
Test Value T1: 3
Thread 2 : 1
Test Value T2: 1
Thread 1 : 2
Test Value T1: 4
Thread 2 : 2
Test Value T2: 1
क्यों धागा 2 अद्यतन मूल्य नहीं पढ़ रहा है? अगर इसे स्थैतिक बनाया जाना है, अस्थिरता का उपयोग क्या है?
क्या कोई अस्थिरता के एक अच्छे उदाहरण को लिंक दे सकता है जहां वह चर स्थिर नहीं घोषित किया जाता है।
धन्यवाद
स्वीकार किए जाते हैं आपके प्रश्न के उत्तर से जुड़े पोस्ट पर उत्तर दें। –
बाकी उत्तर पढ़ें - esp। ** स्थिर अस्थिर ** के बारे में थोड़ा ** .. – Nim
'स्थिर '=/=' अंतिम'। –