मेरे पास एक ऐसा प्रोग्राम है जो लंबे समय तक गणना करता है, इसलिए मैं इसके प्रदर्शन को तेज करना चाहता हूं। इसलिए मैंने इस समय 3 धागे लॉन्च करने की कोशिश की, लेकिन java.exe
अभी भी 25% CPU उपयोग पर कब्जा कर लिया है (इसलिए, केवल एक सीपीयू का उपयोग किया जाता है), और यह तब भी बनी हुई है जब मैं .setPriority(Thread.MAX_PRIORITY);
का उपयोग करने की कोशिश करता हूं और रीयलटाइम पर java.exe
की प्राथमिकता सेट करता हूं (24) । मैंने RealtimeThread
का उपयोग करने की कोशिश की लेकिन ऐसा लगता है कि यह धीमा काम करता है। यह सही होगा यदि प्रत्येक थ्रेड को एक प्रोसेसर को आवंटित किया गया था और कुल CPU उपयोग 75% तक बढ़ गया है, लेकिन मुझे नहीं पता कि इसे कैसे किया जाए। और इस तरह मेरा कोड अभी दिखता है:मेरा थ्रेडेड प्रोग्राम केवल एक सीपीयू का उपयोग क्यों कर रहा है?
Thread g1 = new MyThread(i,j);
g1.setPriority(Thread.MAX_PRIORITY);
g1.run();
Thread g2 = new MyThread(j,i);
g2.setPriority(Thread.MAX_PRIORITY);
g2.run();
Thread g3 = new MyThread(i,j);
g3.setPriority(Thread.MAX_PRIORITY);
g3.run();
if (g1.isAlive()) {
g1.join();
}
if (g2.isAlive()) {
g2.join();
}
if (g3.isAlive()) {
g3.join();
}
'.start()' का उपयोग करें जैसा कि अन्य ने इंगित किया है - और फिर आप * प्राथमिकता के साथ खेलने के बजाए शेड्यूलर को शेड्यूलिंग छोड़ना चाहते हैं। जब तक आप थ्रेड शेड्यूलिंग के बारे में * काफी * नहीं जानते हैं, तो शेड्यूलर की नौकरी करने से बेहतर काम करने की संभावना पतली होती है (सर्वोत्तम पर)। –
[जावा थ्रेड - रन() और प्रारंभ() विधियों के संभावित डुप्लिकेट] (http://stackoverflow.com/questions/3027495/java-thread-run-and-start-methods) –