आम आदमी की शर्तों में जावा में "रननीय" क्या है? मैं हाई स्कूल में एक एपी प्रोग्रामिंग छात्र हूं, जिसका काम अनुसंधान करना है, या दूसरों से यह जानना है कि "रननेबल" क्या है (हम अभी ओओपी में हो रहे हैं, और अभी तक थ्रेड्स को नहीं छुआ है)।
आम आदमी की शर्तों में जावा में "रननीय" क्या है? मैं हाई स्कूल में एक एपी प्रोग्रामिंग छात्र हूं, जिसका काम अनुसंधान करना है, या दूसरों से यह जानना है कि "रननेबल" क्या है (हम अभी ओओपी में हो रहे हैं, और अभी तक थ्रेड्स को नहीं छुआ है)।
जवाबों:
एक रननेबल मूल रूप से एक प्रकार का वर्ग है (रननेबल एक इंटरफ़ेस है) जिसे धागे में रखा जा सकता है, यह वर्णन करते हुए कि धागा क्या करना है।
Runnable इंटरफ़ेस विधि लागू करने के लिए वर्ग की आवश्यकता है run()
ताकि तरह:
public class MyRunnableTask implements Runnable {
public void run() {
// do stuff here
}
}
और फिर इसे इस तरह उपयोग करें:
Thread t = new Thread(new MyRunnableTask());
t.start();
यदि आपके पास Runnable
इंटरफ़ेस नहीं था , तो थ्रेड क्लास, जो आपके सामान को दूसरे थ्रेड में निष्पादित करने के लिए ज़िम्मेदार है, run()
आपकी कक्षा में एक विधि खोजने का वादा नहीं होगा , इसलिए आपको त्रुटियां मिल सकती हैं। यही कारण है कि आपको इंटरफ़ेस को लागू करने की आवश्यकता है।
ध्यान दें कि आपको हमेशा की तरह एक वर्ग को परिभाषित करने की आवश्यकता नहीं है, आप वह सभी इनलाइन कर सकते हैं:
Thread t = new Thread(new Runnable() {
public void run() {
// stuff here
}
});
t.start();
यह ऊपर के समान है, केवल आप एक और नामित वर्ग नहीं बनाते हैं।
run
विधि समाप्त नहीं हो जाती है, तब थ्रेड बंद हो जाता है। यदि आप चाहते हैं कि एक धागा बार-बार चले, तो run
विधि के अंदर एक लूप रखें ।
new Thread(() -> System.out.println("hello from other thread")).start();
Runnable
एक इंटरफ़ेस के रूप में परिभाषित किया गया है:
interface Runnable {
public void run();
}
एक वर्ग बनाने के लिए जो इसका उपयोग करता है, बस कक्षा को इस प्रकार परिभाषित करें (public) class MyRunnable implements Runnable {
यह एक नया थ्रेड बनाने के बिना भी इस्तेमाल किया जा सकता है। यह मूल रूप से एक एकल विधि, रन के साथ आपका मूल इंटरफ़ेस है, जिसे कहा जा सकता है।
यदि आप रनवेबल के साथ एक नया थ्रेड बनाते हैं जैसा कि यह पैरामीटर है, तो यह रन थ्रेड को नए थ्रेड में कॉल करेगा।
यह भी ध्यान दिया जाना चाहिए कि थ्रेड्स लागू होते हैं Runnable
, और इसे तब कहा जाता है जब नया थ्रेड बनाया जाता है (नए थ्रेड में)। डिफॉल्ट इम्प्लीमेंटेशन आपको कंस्ट्रक्टर में जो भी रननेबल सौंपा गया है, उसे कॉल करता है, यही कारण है कि आप new Thread(someRunnable)
थ्रेड के run
तरीके को ओवरराइड किए बिना कर सकते हैं ।
Thread
थ्रेड पूलिंग को बढ़ाते हैं तो मुश्किल है और यदि आप थ्रेड पूलिंग को लागू नहीं करते हैं तो आप हर समय नए धागे बनाने की महत्वपूर्ण लागत पहनते हैं । इसके विपरीत, बस लागू करने का Runnable
मतलब है कि आप आसानी से ThreadPoolExecutorService
या 3-पार्टी थ्रेड पूल जैसी चीजों का उपयोग कर सकते हैं ।