इस समाधान के बारे में कैसे?
यह थ्रेड क्लास का उपयोग नहीं करता है, लेकिन यह समवर्ती है, और एक तरह से यह वही करता है जो आप अनुरोध करते हैं
ExecutorService pool = Executors.newFixedThreadPool(2); // creates a pool of threads for the Future to draw from
Future<Integer> value = pool.submit(new Callable<Integer>() {
@Override
public Integer call() {return 2;}
});
अब आप सभी से यही कहते हैं कि value.get()जब भी आपको अपने लौटाए गए मूल्य को हथियाने की आवश्यकता हो, तो धागा शुरू किया जाता है, दूसरे को आप valueएक मूल्य देते हैं, इसलिए आपको कभी कहने की ज़रूरत नहीं हैthreadName.start() है।
क्या Futureहै, एक वादा है कार्यक्रम के लिए है, आप उस कार्यक्रम का वादा करते हैं जो आपको निकट भविष्य में कुछ समय के लिए इसकी आवश्यकता होगी
यदि आप .get()इसे पूरा करने से पहले कॉल करते हैं, तो जो थ्रेड इसे कॉल कर रहा है, वह बस तब तक इंतजार करेगा जब तक यह पूरा नहीं हो जाता