मेरे पास एक बहुप्रचारित कार्यान्वयन है जहां मैं एक निष्पादक सेवा प्रदान करता हूं और कार्य निष्पादित करने के लिए सबमिट करता हूं, मैं जानना चाहता हूं कि सभी धागे सबमिट किए जाने पर मुख्य धागे और यूआई को अवरुद्ध किए बिना समाप्त हो गया है। मैंने ExecutorService.awaitTermination()
की कोशिश की है लेकिन यह मुख्य धागा और यूआई को अवरुद्ध करता है। मैंने बहुत कुछ खोजा है लेकिन मुझे ऐसा करने का एक शानदार तरीका नहीं दिख रहा है। मैं वर्तमान में एक और थ्रेड बनाने के बारे में सोच रहा हूं जो थ्रेड की मात्रा को पूरा करता है और जब वे सब खत्म हो जाते हैं तो एक ईवेंट लॉन्च करता है, लेकिन यह एक अच्छा दृष्टिकोण नहीं है और मैं एक बेहतर समाधान चाहता था!निष्पादक सेवा, कैसे पता चलेगा कि सभी धागे मुख्य धागे को अवरुद्ध किए बिना समाप्त हुए?
उत्तर
isTerminated()
तथापि
टिप्पणी करना होगा कि awaitTermination
और isTerminated
दोनों ही आप एक सार्थक परिणाम के बाद आप shutdown
मुझे कुछ चीजों के बारे में कुछ पता चला है() लेकिन फिर भी, मुझे लगता है कि मुझे इसे "साइड थ्रेड" पर चलाने की ज़रूरत है ताकि यह लगातार जांच सके कि यह सच है या नहीं, जो मुझे अपने शुरुआती समाधान में लाता है! – Trota
उपयोग एक SwingWorker
बंद करने के लिए थ्रेड पूल कहा जाता है और awaitTermination()
फोन है दे देंगे। यह यूआई को आपके स्विंगवर्कर कार्यान्वयन पर इवेंट डिस्पैच थ्रेड से done()
को अवरुद्ध करने और कॉल करने से रोक देगा, जिसका उपयोग आप जो भी यूआई परिवर्तनों को ट्रिगर करने के लिए कर सकते हैं।
आप एक यूआई के माध्यम से चल रहा है धागे का ट्रैक रखने के लिए अद्यतन आप एक पाश में इस पर नजर रखने और तर्क जो तब EDT पर process()
अपने क्रियान्वयन के लिए पारित करने के साथ publish()
कॉल करने के लिए कार्यकर्ता धागा उपयोग कर सकते हैं की इच्छा है।
आप जब निष्पादक सेवा उदाहरण बंद हो जाता है ट्रैक करने के लिए एक अलग थ्रेड बनाए रख सकते हैं:
final ExecutorService execSvc = ...;
execSvc.submit(task1);
...
execSvc.submit(taskN);
// important to request the exec service to shut down :)
execSvc.shutdown();
new Thread(new Runnable() {
public void run() {
while (!execSvc.isTerminated()) {
try {
execSvc.awaitTermination(60, TimeUnit.SECONDS);
} catch (InterruptedException e) {
// ignore exception
}
}
System.out.println("ExecSvc.run: exec service has terminated!");
// possibly submit a task using SwingUtilities.invokeLater() to update the UI
}
}).start();
का उपयोग CountDownLatch
CountDownLatch latch = new CountDownLatch(totalNumberOfTasks); ExecutorService taskExecutor = Executors.newFixedThreadPool(4); while(...) { taskExecutor.execute(new MyTask()); } try { latch.await(); } catch (InterruptedException E) { // handle }
और अपने कार्य के भीतर
(/ अंत में कोशिश में लगा)latch.countDown();
या निष्पादक सेवा पर आप शट डाउन() और फिरwa itTermination()
ExecutorService taskExecutor = Executors.newFixedThreadPool(4); while(...) { taskExecutor.execute(new MyTask()); } taskExecutor.shutdown(); try { taskExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); } catch (InterruptedException e) { ... }
भी है THIS जवाब
पर टेक्स्ट कॉम्पोनेंट तक पहुंचने में एक छोटी सी गड़बड़ है, जब तक कि मैं अपनी समझ में गलत नहीं हूं, इनमें से कोई भी समाधान ओपी के मौलिक प्रश्न को संबोधित नहीं कर रहा है जो मुख्य पर अवरुद्ध होने से बचने के लिए है धागा। – Trevor
- 1. मुख्य धागे को कैसे अवरुद्ध करें जब तक कि अन्य सभी धागे निष्पादित नहीं हो जाते?
- 2. कैसे पता चलेगा कि अन्य धागे खत्म हो गए हैं?
- 3. धागे को अवरुद्ध किए बिना प्रतीक्षा करें? - किस तरह?
- 4. आवेदन धागे बनाम सेवा धागे
- 5. मुख्य धागे को अवरुद्ध किए बिना फ़ाइलों से आलसी लोडिंग UIImages?
- 6. एनएसटीस्क मुख्य धागे को अवरुद्ध कर रहा है
- 7. निष्पादक सेवा के धागे को बाधित करने के लिए
- 8. किसी निष्पादक सेवा में धागे का नाम कैसे बदलें?
- 9. कैसे पता चलेगा कि एक पूरा सेवा कब समाप्त हो रही है?
- 10. आप एक अभिभावक धागे को कैसे सूचित करते हैं कि सभी बच्चे धागे समाप्त हो गए हैं?
- 11. निष्पादक में सभी धागे को समाप्त करने के लिए प्रतीक्षा करें?
- 12. इकाई परीक्षण कैसे करें कि निष्पादक सेवा कार्य के लिए नए धागे को जन्म देती है?
- 13. जावा में निष्पादक सेवा में सभी धागे को कैसे रोकें/फिर से शुरू करें?
- 14. धागे और निष्पादक का गहन शटडाउन
- 15. कैसे पता चलेगा कि सभी थ्रेड पूल के धागे पहले से ही अपने कार्यों के साथ किए गए हैं?
- 16. URLForUbiquityContainerIdentifier: मुख्य धागे के बाहर धागे में बुलाया जाना चाहिए?
- 17. गैर-मुख्य धागे
- 18. अन्य धागे को प्रभावित किए बिना node.js में धागे को कैसे सोना है?
- 19. मुख्य धागे में धागे में unhandled अपवाद उठाओ?
- 20. स्कैला अभिनेता बनाम धागे और अवरुद्ध आईओ
- 21. निष्पादक सेवा
- 22. किसी अन्य धागे से मुख्य धागे में कोड चलाना
- 23. धागे
- 24. धागे
- 25. एक निष्पादक सेवा
- 26. धागे
- 27. मुख्य कतार/मुख्य धागे पर CoreBluetooth प्रतिनिधि?
- 28. दो धागे और मुख्य कार्यक्रम
- 29. धागे से मुख्य धागे तक अपवाद भेज रहा है?
- 30. पाथ्रेड के लिए, मुख्य धागे से बाल धागे को कैसे मारें
आपका मुख्य कर कि यह अवरुद्ध नहीं किया जा सकता धागा क्या है पर एक नज़र? – EJP
आप किस यूआई टूलकिट का उपयोग कर रहे हैं? – Dev