private ExecutorService exec = Executors.newSingleThreadExecutor(r -> {
Thread t = new Thread(r);
t.setDaemon(true); // allows app to exit if tasks are running
return t ;
});
मुझे समझने में कठिनाई हो रही है कि मैं एक निष्पादक के पीछे विचार समझता हूं, लेकिन पैरामीटर r
मुझे भ्रमित कर रहा है। मैं प्रयोग किया है:जावा 8 लैम्ब्डा
final ExecutorService exec = Executors.newSingleThreadExecutor(r -> {
Thread t = new Thread(r);
System.out.println("Class of r: " + r.getClass()+ ". r to string: " + r.toString());
System.out.println("Class of t: " + t.getClass() +". Name of t: "+ t.getName());
t.setDaemon(true);
return t;
});
बेहतर जानकारी के लिए और परिणाम है:
Class of r: class java.util.concurrent.ThreadPoolExecutor$Worker. r to string: [email protected][State = -1, empty queue]
Class of t: class java.lang.Thread. Name of t: Thread-3
r
Thread
वस्तु निर्माता के लिए एक पैरामीटर के रूप में पारित किया जा रहा है।
- सरल पत्र
r
कैसे यह दर्शाता है कि वस्तु पारित किया जा रहा एकThreadPoolExecutor
है? ThreadPoolExecutor
पैरामीटर के रूप में पास करने योग्य कैसे है यदि यह कोThread's
कन्स्ट्रक्टर द्वारा आवश्यकतानुसार लागू नहीं करता है?
यदि कोई मुझे कोड के गैर-लैम्ब्डा संस्करण प्रदान कर सकता है, तो यह मेरी समझ के लिए बहुत बड़ा लाभ होगा।
धन्यवाद, रेडियोोडेफ़। मैं अब कोड को पूरी तरह से समझता हूं।मैं 'बाहरी क्लास $ आंतरिक क्लास' प्रकार नोटेशन - जावा भाषा विशिष्टता के बारे में और कहां से जान सकता हूं? – user465001
मुझे इसे समझाने में खुशी है। '' '' के बारे में जानने के लिए भी बहुत कुछ नहीं है। जब आप कोड में घोंसले या आंतरिक वर्ग का संदर्भ लेते हैं तो आप 'बाहरी। आंतरिक' का उपयोग करते हैं, लेकिन आम तौर पर इसे वास्तव में 'बाहरी $ इनर' नामक कक्षा में संकलित किया जाता है। '$' सभी पहचानकर्ताओं के लिए एक वैध चरित्र है लेकिन इसे आमतौर पर आंतरिक तंत्र के लिए आरक्षित माना जाता है। http://stackoverflow.com/q/7484210/2891664 – Radiodef
फिर से धन्यवाद, रेडियोोडेफ़! – user465001