में कार्य आदेश निष्पादन निर्दिष्ट करें मैंने बहुत कुछ खोजा है लेकिन कोई समाधान नहीं मिला। मैं इस तरह से थ्रेड पूल जावा का उपयोग करें:जावा
ExecutorService c = Executors.newFixedThreadPool(3);
for (int i = 0; i < 10; ++i) {
c.execute(new MyTask(i));
}
इस तरह से कार्य में फलस्वरूप क्रम में क्रियान्वित कर रहे हैं (कतार में के रूप में)। लेकिन मुझे "अगले कार्य का चयन करें" रणनीति बदलने की जरूरत है। इसलिए मैं प्रत्येक कार्य को प्राथमिकता निर्दिष्ट करना चाहता हूं (यह थ्रेड प्राथमिकता नहीं है) और कार्य को निष्पादित करना इन प्राथमिकताओं से मेल खाता है। तो जब निष्पादक ने एक और कार्य पूरा कर लिया है तो यह कार्य को अधिकतम प्राथमिकता के साथ कार्य के रूप में चुनता है। यह सामान्य समस्या का वर्णन करता है। शायद वहां एक और सरल दृष्टिकोण है जो प्राथमिकताओं को खाता नहीं है। यह अंतिम जोड़ा गया कार्य के बजाय निष्पादित करने के बाद अंतिम जोड़ा गया कार्य का चयन करता है। निश्चित रूप से फिक्स्ड थ्रेडपूल फीफो रणनीति का उपयोग करते हुए बोलते हैं। क्या मैं उदाहरण के लिए लिफो रणनीति का उपयोग कर सकता हूं?
+1 शायद इसे बेहतर बनाने के लिए एक स्निपेट दें। – Tudor
यह काम नहीं कर सकता है क्योंकि 'newTaskFor' तुलनात्मक फ्यूचरटास्क को एक फ्यूचरटास्क में लपेट देगा, जो तुलनीय नहीं है। आपको दो 'newTaskFor' विधियों को ओवरराइड करने की भी आवश्यकता है। – assylias
एक सरल उदाहरण के लिए [यह पोस्ट] देखें (http://stackoverflow.com/a/16834473/829571)। – assylias