संभव डुप्लिकेट चल/एकल जावा धागा:
Would a multithreaded Java application exploit a multi-core machine very well?ड्युअल-कोर CPU उपयोग
मैं अपने डुअल कोर मशीन पर चल रहा है इस तरह एक सादा और सरल जावा धागा है (विंडोज एक्सपी 32 बिट पर्यावरण)
public static void main(String[] strs) {
long j = 0;
for(long i = 0; i<Long.MAX_VALUE; i++)
j++;
System.out.println(j);
}
मेरी उम्मीद थी कि यह एक सीपी तक टिकेगी यू उच्च गति कैश का पूरी तरह से शोषण करने के लिए (चूंकि लूप में हम स्थानीय चर जे के साथ काम करते रहते हैं, इसलिए एक सीपीयू उपयोगिता 100% होगी और दूसरा बहुत निष्क्रिय होगा। मेरी प्राप्ति के लिए थ्रेड शुरू होने के बाद दोनों सीपीयू का उपयोग लगभग 40% ~ 60% पर किया जा रहा है और एक सीपीयू का उपयोग दूसरे की तुलना में थोड़ा अधिक है।
मेरा सवाल यह है कि क्या कोई ओएस लोड-बैलेंसिंग तंत्र है जो बाहर की शेष राशि का पता चला है? मेरे मामले में यह संभव है कि विंडोज ओएस ने पाया कि एक सीपीयू लगभग 100% मार रहा है और दूसरा लगभग निष्क्रिय है, इसलिए यह समय-समय पर थ्रेड को दूसरे CPU पर पुन: निर्धारित करता है?
# EDIT1 मैं एक संभावित व्याख्या पाया है: http://siber.cankaya.edu.tr/ozdogan/OperatingSystems/ceng328/node130.html
हां, ओएस चारों ओर धागे उछाल देगा। – Mysticial
मुझे लगता है कि इस प्रश्न का उत्तर पहले ही दिया जा चुका है http://stackoverflow.com/questions/1649402/would-a-multithreaded-java-application-exploit-a-multi-core-machine-very-well – parion
और ध्यान रखें कि अधिकांश जावा प्रोग्राम एक कोर का उपयोग करने और एक कोर के साथ रहने का प्रयास करेंगे, जैसा कि मैंने Minecraft के साथ पाया था। यहां एक ऐसे व्यक्ति की कहानी दी गई है जिसने इसे अपने नए कंप्यूटर के साथ पाया है http://mlee888.wordpress.com/2006/03/31/java-performance-in-dual-coremultiprocessor-environment/ – parion