थ्रेड इंटरफेरेंस एरर की अवधारणा को समझने के लिए आइए एक उदाहरण देखें -
उदाहरण
import java.io.*; class Demo_instance{ static int val_1 = 6; void increment_val(){ for(int j=1;j<11;j++){ val_1 = val_1 + 1; System.out.println("The value of i after incrementing it is "+val_1); } } void decrement_val(){ for(int j=1;j<11;j++){ val_1 = val_1 - 1; System.out.println("The value of i after decrementing it is "+val_1); } } } public class Demo{ public static void main(String[] args){ System.out.println("Instance of Demo_instance created"); System.out.println("Thread instance created"); final Demo_instance my_inst = new Demo_instance(); Thread my_thread_1 = new Thread(){ @Override public void run(){ my_inst.increment_val(); } }; Thread my_thread_2 = new Thread(){ @Override public void run(){ my_inst.decrement_val(); } }; my_thread_1.start(); my_thread_2.start(); } }
आउटपुट
Instance of Demo_instance created Thread instance created The value of i after incrementing it is 7 The value of i after incrementing it is 7 The value of i after decrementing it is 6 The value of i after incrementing it is 8 The value of i after decrementing it is 7 The value of i after incrementing it is 8 The value of i after incrementing it is 8 The value of i after decrementing it is 7 The value of i after incrementing it is 9 The value of i after decrementing it is 8 The value of i after decrementing it is 7 The value of i after decrementing it is 6 The value of i after decrementing it is 5 The value of i after decrementing it is 4 The value of i after decrementing it is 3 The value of i after decrementing it is 2 The value of i after incrementing it is 3 The value of i after incrementing it is 4 The value of i after incrementing it is 5 The value of i after incrementing it is 6
'Demo_instance' नामक एक वर्ग एक स्थिर मान और एक शून्य फ़ंक्शन 'increment_val' को परिभाषित करता है, जो संख्याओं के एक सेट पर पुनरावृति करता है, और इसे बढ़ाता है और इसे कंसोल पर प्रदर्शित करता है। 'decrement_val' नाम का एक अन्य फंक्शन हर बार संख्याओं और डिक्रीमेंट के एक सेट पर पुनरावृति करता है और कंसोल पर आउटपुट प्रदर्शित करता है।
डेमो नामक एक वर्ग में मुख्य कार्य होता है जो कक्षा का एक उदाहरण बनाता है, और एक नया धागा बनाता है। यह थ्रेड ओवरराइड है, और इस ऑब्जेक्ट इंस्टेंस पर रन फ़ंक्शन को कॉल किया जाता है। दूसरे धागे के लिए भी यही किया जाता है। इन दोनों थ्रेड्स को तब 'स्टार्ट' फंक्शन के साथ बुलाया जाता है।