मेरे कंप्यूटर में 4 कोर हैं और मैं जावा स्विंग गुई प्रोग्राम चला रहा हूं। जब मैं अपना आवेदन चलाता हूं तो यह केवल दो कोर और लगभग 30% CPU उपयोग का उपयोग करता है। मेरे पास प्रक्रिया करने के लिए बड़ी संख्या में फाइलें हैं और उन्हें अधिक सीपीयू का उपयोग करके इस कार्य को तेजी से करने के लिए उन्हें दो धागे में विभाजित करना है।स्विंगवर्कर उदाहरण एक साथ चल रहे नहीं हैं
class PrepareTask extends SwingWorker<Void, Void> {
int start, end;
PrepareTask (int start, int end) { ... }
...
public Void doInBackground() {... }
public void done() { ... }
मैं दो इस तरह के उदाहरण बना:
मैं एक SwingWorker वर्ग PrepareTask कहा जाता है, दो ints के साथ एक निर्माता है कि है
PrepareTask prepareTask = new PrepareTask(0,numberOfFiles/2);
prepareTask.execute();
PrepareTask prepareTask2 = new PrepareTask(numberOfFiles/2, numberOfFiles);
prepareTask2.execute();
दोनों का शुभारंभ किया है (ऐसा लगता है), लेकिन जब यह चलता है तो मैं देख सकता हूं (प्रिंट स्टैम) कि पहले तैयार करने से पहले पहले तैयार करना (प्रिंट स्टैम्स अंदर) खत्म करना होगा। और सीपीयू उपयोग पहले जैसा ही है, लगभग 30%। वे दोनों एक ही स्रोत, एक डिफ़ॉल्टTableModel से डेटा लेते हैं।
यह कैसे करें या मैं क्या गलत कर रहा हूं इस पर कोई विचार? धन्यवाद।
कृपया ध्यान दें कि यदि अधिकांश प्रोसेसिंग समय में फ़ाइल पहुंच शामिल है, तो कई धागे होने से यह तेज़ी से नहीं बढ़ेगा क्योंकि डिस्क आपकी बाधा बन जाएगी। क्या आप इन फ़ाइलों पर प्रसंस्करण की तरह आगे बढ़ सकते हैं? – jfpoilpret