को देखते हुए:बनाना एक वर्ग थ्रेड-सुरक्षित
public class TestSeven extends Thread {
private static int x;
public synchronized void doThings() {
int current = x;
current++;
x = current;
}
public void run() {
doThings();
}
}
कौन सा वाक्य सही है?
ए संकलन विफल रहता है।
बी रनटाइम पर एक अपवाद फेंक दिया गया है।
सी। रन() विधि सिंक्रनाइज़ करने से वर्ग थ्रेड-सुरक्षित हो जाएगा।
डी। परिवर्तनीय "एक्स" में डेटा समवर्ती पहुंच समस्याओं से संरक्षित है।
ई। डॉटिंग्स() विधि को स्थिर के रूप में घोषित करने से वर्ग थ्रेड-सुरक्षित हो जाएगा।
एफ। सिंक्रनाइज़ (नया ऑब्जेक्ट()) {} ब्लॉक में doThings() के भीतर बयानों को लपेटना कक्षा थ्रेड-सुरक्षित बना देगा।
क्या कक्षा थ्रेड-सुरक्षित बनाने के लिए doThings() को सिंक्रनाइज़ करने के लिए पर्याप्त नहीं है? मैं देखता हूं कि सही उत्तर डी है लेकिन इस प्रश्न का मॉडल उत्तर ई है, लेकिन मुझे समझ में नहीं आता क्यों?
डी सही नहीं है। – Keppil
ई सही है क्योंकि यह "सिंक्रनाइज़ किए गए कीवर्ड को हटाएं" नहीं कहता है। अनावश्यक रूप से मुश्किल वाक्यांश, लेकिन इन परीक्षाओं में आपको यही मिलता है। – Thilo
डी सही है, क्योंकि दिए गए वर्ग के साथ x के मान को बदलने का कोई और तरीका नहीं है। यदि अन्य विधि जोड़ने की अनुमति है, तो मैं कहूंगा कि समाधान ई भी सही नहीं है। –