2013-04-10 6 views
6

क्या जावा प्रोग्राम का एक थ्रेड सीपीयू पर स्वचालित रूप से एकाधिक कोर का उपयोग कर सकता है?एकाधिक कोर का उपयोग करने के लिए सिंगल थ्रेड प्रोग्राम

+0

नहीं एक प्रश्न के साथ एक सवाल का जवाब देने के लिए, लेकिन कैसे कर सकता है एक चेक-आउट एकाधिक, खाली चेक-आउट के बूथों का टेलर मेकअप उपयोग? – Makoto

उत्तर

0

आमतौर पर जीसी एक अलग थ्रेड में चल रहा है। लेकिन आमतौर पर यह कोई महत्वपूर्ण अंतर नहीं करता है। बस इतना ही।

+0

जीसी एक अलग थ्रेड में चल रहा है मेरे अनुभव में _huge_ प्रदर्शन सुधार है। – Gray

+0

@ ग्रे यह प्रोग्राम के प्रकार पर निर्भर करता है - वस्तुओं को कैसे बनाया जाता है, वे कितने और कब तक रहते हैं। वास्तव में – kan

+0

। लेकिन कहने के लिए कि यह "कोई महत्वपूर्ण अंतर नहीं" IMHO, गलत है। – Gray

13

क्या जावा प्रोग्राम का एक थ्रेड सीपीयू पर स्वचालित रूप से एकाधिक कोर का उपयोग कर सकता है?

हां और नहीं। एक थ्रेडेड जावा प्रोग्राम जीसी, जेएमएक्स, फाइनलाइज़र, और अन्य पृष्ठभूमि धागे में कई धागे का उपयोग करेगा, अलग-अलग CPUs (चाहे सीपीयू या कोर) में चल सकता है। जीसी धागे विशेष रूप से एक महत्वपूर्ण प्रदर्शन बढ़ावा देते हैं यदि वे किसी अन्य सीपीयू में चल रहे हैं। हालांकि, आपके एकल थ्रेडेड एप्लिकेशन, हालांकि यह CPUs के बीच स्थानांतरित कर सकता है, एक ही समय में 2 CPUs में कभी नहीं चल रहा है।

कैसे पता लगाने के लिए कि?

यह एक कठिन सवाल है और यह इस बात पर निर्भर करता है कि आप किस आर्किटेक्चर पर चल रहे हैं। ps * निक्स के तहत दिखाए जा सकेंगे कि क्या आपके पास रन कतार में एकाधिक थ्रेड हैं लेकिन फिर भी यह नहीं दिखाया जा सकता है कि वे वास्तव में एकाधिक CPUs में निष्पादित कर रहे हैं।

+0

मेरा मतलब है एकाधिक कोर, एकाधिक भौतिक cpus नहीं। – user697911

+0

वही उत्तर @ user697911। जेवीएम के लिए, कोर/सीपीयू भेद ज्यादातर ओएस द्वारा पूरी तरह छुपा नहीं है। – Gray

+1

ओएस कोर और सीपीयू के बीच का अंतर जान सकता है, लेकिन JVM केवल तार्किक CPUs –

1

आपका अपना कोड कई कोर पर नहीं चलेंगे अगर यह परिभाषा एकल लड़ी कर रहा है। कोई भी थ्रेडेड एप्लिकेशन एकाधिक कोर पर एक साथ चल सकता है - जब तक कि आप बिना किसी जानकारी के मल्टीथ्रेड कॉल/लाइब्रेरी का उपयोग कर रहे हों।

+0

देखता है तो मेरा एप्लिकेशन तेज़ी से बनाने के लिए, मुझे इसे एकाधिक थ्रेड करना होगा? मेरी मशीन में 16 कोर हैं, और एक कोर इंगित किया गया है कि 100% से अधिक सीपीयू का उपयोग किया गया है, लेकिन अन्य स्वतंत्र हैं। और आवेदन बेहद धीमा है। – user697911

+0

हां, आपको यह पता लगाने की आवश्यकता है कि अपना एल्गोरिदम कैसे लिखना है ताकि काम धागे के बीच विभाजित हो। उदाहरण के लिए, यदि आप 160 तत्वों की सरणी में कुछ करने के लिए लूप का उपयोग कर रहे हैं, तो आप 16 धागे उत्पन्न कर सकते हैं जो प्रत्येक 10 तत्वों पर काम करते हैं। हालांकि, आपको यह सुनिश्चित करने की आवश्यकता है कि पिछली गणनाओं को भविष्य की गणना की आवश्यकता नहीं है। उदाहरण के लिए, यदि आपकी गणना 160 दिन से अधिक का कुल लाभ है, तो प्रत्येक दिन पिछले की गणना करने की आवश्यकता होगी। –

+0

एकाधिक धागे का उपयोग करने से अधिक मेमोरी का उपयोग होगा? – user697911

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