आपने यहां केवल एक प्रश्न पूछा था, लेकिन एक दर्जन या इतने प्रश्न हैं जो आपको पूछे जाने चाहिए , इसलिए मैं उन सभी का उत्तर दूंगा।
यहां वह क्रम है जो मैंने ग्रहण किया
- क्लास कंस्ट्रक्टर की शुरुआत (जिसे भी जाना जाता है
cctor
)
- ट्रैक्टर का अंत
- मेन की शुरुआत
- MyMethod की शुरुआत
क्या ये सही है?
सही अनुक्रम है:
- कार्यक्रम के लिए ट्रैक्टर की शुरुआत, अगर वहाँ एक है। वहाँ नही है।
- कार्यक्रम के लिए ट्रैक्टर का अंत, अगर वहाँ एक है। वहाँ नही है।
- मेन की शुरुआत
- MyClass के लिए ट्रैक्टर की शुरुआत
- MyClass के लिए ट्रैक्टर का अंत
- MyClass.MyMethod की शुरुआत
यदि कोई स्थैतिक क्षेत्र आरम्भिक है तो क्या होगा?
सीएलआर को उस क्रम को बदलने की अनुमति दी जाती है जिसमें कुछ मामलों में स्थैतिक क्षेत्र के आरंभकर्ता चलते हैं। विवरण के लिए विषय पर जॉन का पृष्ठ देखें:
स्थिर कन्स्ट्रक्टर और टाइप इनिशियलाइज़र के बीच अंतर
क्या किसी स्थिर विधि के लिए यह संभव MyMethod
है कि उस वर्ग के ट्रैक्टर को पूरा करने से पहले बुलाया जाए?
हाँ। यदि ट्रैक्टर खुद ही MyMethod कहता है, तो जाहिर है कि MyMethod को ट्रैक्टर पूरा होने से पहले बुलाया जाएगा।
ट्रैक्टर को MyMethod नहीं कहते हैं। क्या MyMethod
मायक्लास के पूरा होने से पहले कभी भी स्थैतिक विधि को बुलाया जाना संभव है ?
हाँ। यदि ट्रैक्टर दूसरे प्रकार का उपयोग करता है, जिसका ट्रैक्टर MyMethod कहता है, तो MyMassod को MyClass ट्रैक्टर पूर्ण होने से पहले बुलाया जाएगा।
कोई भी डॉक्टर MyMethod को प्रत्यक्ष या अप्रत्यक्ष रूप से नहीं कहता है! अब क्या यह संभव है MyMethod
कि माईक्लास के ट्रैक्टर के पूर्ण होने से पहले एक स्थैतिक विधि को बुलाया जाए?
नहीं।
क्या यह अभी भी सच है अगर कई धागे शामिल हैं?
हाँ। किसी भी धागे पर स्थिर विधि को बुलाया जा सकता है इससे पहले कि ट्रैक्टर एक धागे पर खत्म हो जाएगा।
क्या ट्रैक्टर को एक से अधिक बार कहा जा सकता है? मान लीजिए कि दो धागों से दोनों ट्रैक्टर चलते हैं।
ट्रैक्टर को एक बार में बुलाया जाना चाहिए, चाहे कितने भी धागे शामिल हों। यदि दो धागे MyMethod को "एक ही समय में" कहते हैं, तो वे दौड़ते हैं। उनमें से एक दौड़ और ब्लॉक खो देता है जब तक कि MyClass cctor विजेता धागे पर पूरा नहीं हो जाता।
हारने वाले धागे ब्लॉक तब तक होते हैं जब तक कि ट्रैक्टर नहीं किया जाता है? सच में ?
वास्तव में।
तो क्या होगा अगर जीतने वाले थ्रेड पर मौजूद कोड हारने वाले धागे द्वारा लिए गए लॉक को ब्लॉक करता है ?
फिर आपके पास एक क्लासिक लॉक ऑर्डर उलटा स्थिति है। आपका कार्यक्रम गतिरोध सदैव।
जो खतरनाक लगता है। मैं गतिरोध से कैसे बच सकता हूं?
अगर ऐसा करते समय आपको दर्द होता है तो ऐसा करना बंद कर दें । कभी भी ऐसा कुछ न करें जो एक ट्रैक्टर में अवरुद्ध हो सकता है।
क्या जटिल सुरक्षा आवश्यकताओं को लागू करने के लिए ट्रैक्टर आरंभीकरण शब्दार्थ पर भरोसा करना एक अच्छा विचार है? और क्या यह एक अच्छा विचार है कि एक ट्रैक्टर है जो उपयोगकर्ता को बातचीत करता है?
न ही अच्छे विचार हैं। मेरी सलाह यह है कि आपको यह सुनिश्चित करने के लिए एक अलग तरीका खोजना चाहिए कि आपके तरीकों के सुरक्षा-प्रभाव वाले पूर्व शर्त पूरे किए जाएं।