नई जावा समरूपता सुविधाओं (java.util.concurrent
package में) को देखें जो जावा 5 में जोड़ा गया है। यह कार्यक्षमता प्रदान करता है जो नियमित Thread
एस से अधिक उच्च स्तर है जो इसे आसान (और कम त्रुटि-प्रवण) बनाता है समवर्ती अनुप्रयोग लिखें। Lesson: ConcurrencyThe Java Tutorials शुरू करने के लिए एक अच्छी जगह होगी।
अब तक, मैं केवल ExecutorService
का उपयोग किया है, जो thread pools, उत्पादन कर सकते हैं अनुमति देता है जो नए कार्य Runnable
या Callable
रों (जो Future
रों के रूप में निष्पादन के बाद मान सकते हैं) की इकाइयों में हस्तांतरित कर दिया जा सकता है, और वास्तविक थ्रेडिंग कोड ExecutorService
द्वारा संभाला जाता है।
उदाहरण के लिए
, 2 धागे की एक धागा पूल का उपयोग कर कुछ गणना प्रदर्शन, और परिणाम हो रही है के रूप में सरल किया जा सकता है:
ExecutorService es = Executors.newFixedThreadPool(2);
Future f1 = es.submit(new Callable<Integer>() {
public Integer call()
{
// Do some processing...
return someInteger;
}
});
Future f2 = es.submit(new Callable<Integer>() {
public Integer call()
{
// Do some processing...
return someInteger;
}
});
Integer firstInteger = f1.get();
Integer secondInteger = f2.get();
ऊपर (untested) कोड में, मैं के बारे में चिंता करने की ज़रूरत है परिणाम Callable
एस और submit
इसे ExecutorService
पर और बाद में Future
एस का उपयोग करके परिणाम पुनर्प्राप्त करने के लिए बना रहा है।
पकड़ रहा है, एक बार Future
की get
विधि कहा जाता है, अगर प्रसंस्करण पूरा नहीं हुआ है, इस कार्यक्रम जब तक Future
का परिणाम प्राप्त किए जा सकें बंद हो जाएगा। तो, इस उदाहरण में, f2
का परिणाम f1
से पहले उपलब्ध है, तो प्रोग्राम f1
के परिणाम तक प्रतीक्षा करेगा।
पढ़ने की सामग्री के मामले में, जल्द ही खरीदने के लिए किताबों की मेरी सूची पर ब्रायन गोएट्ज़ द्वारा Java Concurrency in Practice है, जो अक्सर जावा में समेकन के समय आता है।
जावा 5 दस्तावेज़ से Concurrency Utilities पृष्ठ में और जानकारी भी है।
कौन सोचता है कि यह प्रश्न रचनात्मक नहीं है? यह रचनात्मक है। – Xofo