मैं स्कैला अभिनेता से बाहर निकलने के लिए कैसे प्रतीक्षा करूं()? मैंने यूनिट टेस्ट में दो अभिनेताओं की स्थापना की, और उन्हें शुरू करने के लिए कुछ संदेश भेज दिए। वे कुछ संदेश आगे और आगे भेजते हैं और अंततः दोनों कॉल बाहर निकलें()। गुजरने से पहले दोनों अभिनेताओं को खत्म करने के लिए मैं अपना यूनिट टेस्ट इंतजार कैसे करूं?बाहर निकलने के लिए एक अभिनेता की प्रतीक्षा करें()
उत्तर
यदि आप पहले से ही अभिनेताओं के बीच आदान-प्रदान संदेशों की संख्या जानते हैं, तो आप संदेश की गिनती का ट्रैक रखने के लिए java.util.concurrent.CountDownLatch
का उपयोग कर सकते हैं। अभिनेताओं में, संदेश के प्रत्येक प्रसंस्करण के बाद,
latch.countDown()
और अपने मुख्य थ्रेड में क्या
latch.await()
यह आपके मुख्य थ्रेड प्रतीक्षा कर देगा तक कुंडी की गिनती शून्य हो जाने पर है।
यदि आप पहले से संदेशों की गिनती नहीं जानते हैं, लेकिन एक शर्त है जो खत्म करने का संकेत देती है, तो आप java.util.concurrent.locks.Condition
का उपयोग कर सकते हैं। अभिनेताओं में, जब अपने शर्त पूरी होने,
if (conditionSatisfied)
condition.signal()
और अपने मुख्य थ्रेड में क्या
while (!conditionSatisfied)
condition.await()
यह प्रतीक्षा करने के लिए जब तक शर्त पूरी होने से करते हैं।
विवरण के लिए CountDownLatch
और Condition
के javadocs देखें।
this GistCondition
का उपयोग करने के उदाहरण के लिए देखें।
चश्मा में आप Eventually Matchers का उपयोग कर सकते हैं। आप अपने अभिनेता की अंतिम अवस्था या किसी भी संस्था को जानते हैं (जैसे कि, हठ की दुकान) यह संशोधित करता है, आप परीक्षण प्रतीक्षा करने के लिए मजबूर हो सकता है, जब तक इस राज्य के लिए स्विच हो जाएगा:
<entity state> must eventually(10, 1.second)(be(<state>)) // there will be 10 retires every second, and if the state will be different, exception is thrown
इससे इकाई परीक्षण एक सेकंड के दसवें हिस्से को चलाने के लिए चलाएगा जो कि बहुत धीमा है। –
- 1. गैर-बच्चों की प्रक्रियाओं से बाहर निकलने के लिए कैसे प्रतीक्षा करें
- 2. कार्यक्रम बाहर निकलने के
- 3. वीबीए शैल और बाहर निकलने के कोड के साथ प्रतीक्षा करें
- 4. कैसे बाहर निकलने के लिए सीएसएस BeautifulSoup
- 5. स्थापना बाहर निकलने के कोड एक अपवाद
- 6. प्रत्येक mootools से बाहर निकलने के लिए कैसे करें()
- 7. अक्का अभिनेता - किसी संदेश की अपेक्षा करने के लिए कुछ समय प्रतीक्षा करें, अन्यथा
- 8. क्यूटी एप्लिकेशन बाहर निकलने की घटना रद्द करें
- 9. विंडोज़ अनुप्रयोग के बाहर निकलने के कोड की सूची
- 10. यदि एक्स बाल प्रक्रिया नहीं है तो मैं बाहर निकलने के लिए पीआईडी एक्स की प्रतीक्षा कैसे करूं?
- 11. मदद की तरह पाइथन सहायता देखने पर बाहर निकलने के लिए कैसे बाहर निकलें (os.listdir)
- 12. प्रक्रिया प्रविष्टि/बाहर निकलने के लिए कोई संभावित समाधान?
- 13. बाहर निकलने पर डबल पुष्टिकरण
- 14. पायथन Multiprocessing बाहर निकलने त्रुटि
- 15. एक निश्चित समय के लिए इनपुट की प्रतीक्षा करें
- 16. UIDocumentInteractionController बाहर निकलने पर क्रैशिंग
- 17. एंड्रॉयड बाहर निकलने SQLite खोल
- 18. बाहर निकलने के कार्यक्रम पर एंड्रॉइड एप्लिकेशन
- 19. सूचित करते समय प्रतीक्षा करें (लंबी टाइमआउट) अधिसूचना या समय समाप्ति के लिए बाहर निकलें?
- 20. लूप से बाहर निकलने के लिए वापसी का उपयोग करना?
- 21. बाहर निकलने और बाहर निकलने के बीच क्या अंतर है! रूबी में?
- 22. जीडीबी - प्रोग्राम से बाहर निकलने के लिए कैसे पता लगाएं
- 23. एसिंक्रोनस डब्ल्यूएस कॉल और प्रतीक्षा() एक नियंत्रक के बाहर
- 24. अक्का अभिनेता फॉर बनाम एक अभिनेता आरफ
- 25. विंडोज़ में पोते की प्रक्रियाओं की प्रतीक्षा
- 26. रुबी के नेट :: एसएसएच लाइब्रेरी के साथ बाहर निकलने की स्थिति कैसे प्राप्त करें?
- 27. QuickCheck बाहर निकलने की स्थिति, और कबाल एकीकरण
- 28. बैश प्रक्रिया प्रतिस्थापन और बाहर निकलने कोड
- 29. क्या 'नया अपवाद फेंक' को बाहर निकलने की आवश्यकता है()?
- 30. अभिनेता
मैं उलटी गिनती() बस से पहले कर सकते थे बाहर निकलें() और केवल 1 तक गिनती है। यह अनावश्यक लगता है हालांकि दोनों तरीकों को हमेशा एक साथ बुलाया जाएगा। –
मुझे यह नहीं मिला। आप चाहते हैं कि मुख्य धागा कलाकारों के समाप्त होने तक प्रतीक्षा करें, है ना? यही वही है जो 'प्रतीक्षा()' कॉल करेगा। –
इसका मतलब है कि मुझे उत्पादन कोड (अभिनेता) को पूरी तरह से जुनीट टेस्ट (अभिनेताओं पर इंतजार) के लिए एक लच या शर्त जोड़नी है। –