2011-12-09 16 views
9

की संख्या को सीमित कैसे कर सकता हूं, मैं XSEDE संसाधनों में से किसी एक पर एक जीनोम असेंबली प्रोग्राम * ट्रिनिटी, http://trinityrnaseq.sourceforge.net/ चला रहा हूं)। हार्डवेयर धागे की संख्या को 2500 तक सीमित करता है, जो प्रोग्राम हमेशा से अधिक होना चाहता है ... इसे निष्पादित धागे की संख्या को सीमित करने का एक आसान तरीका है? मैंने -XX:ParallelGCThreads=16 को आजमाया है, लेकिन ऐसा लगता है कि यह नई त्रुटियों को पेश करता है।रनटाइम पर, मैं जावा थ्रेड

तो, क्या थ्रेड की कुल संख्या को सीमित करने के लिए रनटाइम कमांड है ??

+4

समस्या यह है कि भले ही आप थ्रेड की संख्या को सीमित करने के लिए JVM को बता सकें, ट्रिनिटी एप्लिकेशन तर्क अभी भी अधिक थ्रेड प्राप्त करने का प्रयास करेगा और इस प्रकार रनटाइम पर असफल हो जाएगा (या ब्लॉक)। ऐसा लगता है कि आप वास्तव में एक अलग फोर्किंग/थ्रेड निर्माण रणनीति का उपयोग करने के लिए ट्रिनिटी कोडबेस को पैच करना चाहते हैं, और इससे उनका स्रोत प्राप्त हो जाएगा और इसे बदल दिया जाएगा। –

+0

मैंने ट्रिनिटी दस्तावेज़ों को स्किम किया और एक --CPU विकल्प देखा। क्या आपने कोशिश की है? – user949300

+0

मैंने ट्रिनिटी दस्तावेज़ों को स्किम किया और एक --CPU विकल्प देखा। क्या आपने कोशिश की है? – user949300

उत्तर

0

आप एक कस्टम कतार का उपयोग कर सकते हैं जो एक अलग प्रक्रिया के रूप में चलता है जो धागे की सीमा को सीमित करता है। इसका लाभ यह है कि आप धागे को सीमित करने का विकल्प चुन सकते हैं या आप अभी भी धागे की संख्या जोड़ सकते हैं। आपके पास शायद addToQueue(Thread t) कक्षा होगी और बाद में उपभोक्ता इन सभी धागे का उपभोग करेगा। कतार को पता चलेगा कि कितने धागे सक्रिय रूप से चल रहे हैं। यदि सीमाएं सीमा के भीतर अच्छी तरह से हैं तो डिमन प्रक्रिया इस कतार के consume() विधि को आग लग जाएगी। और प्रत्येक धागे के बाद यह नौकरी खत्म या compeltes, यह कतार में वापस रिपोर्ट। यदि आप महसूस करते हैं कि चल रहे कार्यों पर प्राथमिकता होनी चाहिए तो आपके द्वारा बनाए गए कतार प्राथमिकता कतार हो सकते हैं। यह न केवल JVM पर निर्भरता को हटाता है बल्कि आपके प्रोग्राम को क्लीनर बनाता है।

2

एक निष्पादक या निष्पादक सेवा का उपयोग करें। क्या ब्रैबॉय सुझाव देता है लेकिन यह जावा में बनाया गया है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^