क्या किसी के पास जावा थ्रेड क्लास की रन() विधि के इतिहास में कोई अंतर्दृष्टि है? लगभग हर समय, इसे ओवरराइडिंग द्वारा उपयोग किया जाता है और इस प्रकार संरक्षित संशोधक अधिक उपयुक्त होगा? यह अभी भी उपयोगकर्ताओं के लिए सार्वजनिक एपीआई के रूप में प्रारंभ() को छोड़ देगा और इस प्रकार गलतियों के लिए गलतियों के लिए कोई भी कमरा नहीं छोड़ देगा() गलती से।जावा थ्रेड के रन पर सार्वजनिक संशोधक के लाभ()
उत्तर
Thread
Runnable
लागू करता है, जो run()
विधि को परिभाषित करता है, इसलिए इसे सार्वजनिक होना चाहिए।
लेकिन चूंकि जावा 1.5 java.lang.Thread
के बजाय Executors services का उपयोग करने की सलाह दी जाती है। निष्पादक वास्तविक निष्पादक से कार्य की इकाई (Runnable
, Callable
) निष्पादित करने के लिए decoupling कर रहे हैं। (Thread
के साथ वे एक ही बात थे)
run
Runnable
इंटरफ़ेस में परिभाषित किया गया है और इंटरफ़ेस में परिभाषित सभी विधियां सार्वजनिक हैं।
धन्यवाद लेकिन मुझे अपने प्रश्न में कुछ और विस्तार करना चाहिए था - क्या थ्रेड को वास्तव में रननेबल को लागू करने की आवश्यकता है जब यह इंजेक्शन वाले रननेबल लक्ष्य पर इसके सभी काम करता है? – gshx
आप थ्रेड को ओवरराइड करने से बेहतर नहीं हैं, आपको एक रननेबल बनाना चाहिए और इसे नए थ्रेड के लिए निर्माता में पास करना चाहिए। इस तरह से काम किया जा रहा है, रननेबल, कार्यान्वयन तंत्र, थ्रेड से अलग रखा जाता है।
नाथन, मैं आपसे सहमत हूं और यही कारण है कि मैं सोच रहा हूं कि यह पहले स्थान पर क्यों है - थ्रेड लागू करने का थ्रेड लागू करने का क्या उपयोग होता है जब थ्रेड क्लास में पहले से ही एक कन्स्ट्रक्टर होता है जो रननेबल को स्वीकार करता है जो रन ओवरराइड करता है() – gshx
@gshx : अच्छा सवाल, मेरा अनुमान है कि यह एक शॉर्टकट के रूप में प्रदान किया जाता है। –
मुझे लगता है कि यह मूल रूप से एक खराब डिज़ाइन है, जो उपयोगकर्ता के लिए "सरल" चीजों को बनाने के हित में, कार्य को चलाने के लिए थ्रेड पर Runnable
) को सीधे चलाने के लिए अनुमति देता है। चूंकि Thread
जेडीके 1.0 में जोड़ा गया था, हालांकि, उस डिजाइन को तब से बदला नहीं जा सका है, Executor
ढांचे के पक्ष में बस हटा दिया गया है। जेडीके 1.0 बहुत समय पहले था, और तब से विभिन्न गलतियों को अनुभव के लाभ के बिना बनाया गया था।
मैं वास्तव में निष्पादकों का उपयोग करने के सुझाव के साथ थ्रेड पर रन() को बहिष्कृत करने के पक्ष में हूं।इसे अभी संरक्षित करना स्पष्ट रूप से असंभव है। – gshx
- 1. थ्रेड # रन और थ्रेड # वेकअप के बीच अंतर?
- 2. हैंडलर थ्रेड रन
- 3. जावा सार्वजनिक कक्षाएं
- 4. MySQL पर MySQLi के लाभ
- 5. लाभ जावा
- 6. जावा थ्रेड: रन विधि चेक अपवाद फेंक नहीं सकता
- 7. लाभ और तरीकों बनाम सार्वजनिक चर मिल
- 8. थ्रेड स्टार्ट रन नहीं है
- 9. जावा अस्थिर संशोधक और सिंक्रनाइज़ ब्लॉक
- 10. एरलैंग के लाभ (कुछ ऐसा) node.js पर लाभ?
- 11. 64 बिट जावा प्लेटफ़ॉर्म के लाभ
- 12. सार्वजनिक कक्षा के बिना .java फ़ाइल का जावा संकलन
- 13. जावा - थ्रेड पर विधि शुरू करने के लिए कॉल करें: यह रननेबल इंटरफ़ेस के रन() को कैसे रूट करता है?
- 14. कक्षा में डिफ़ॉल्ट पहुंच संशोधक होने पर सार्वजनिक विधियों का उपयोग क्या होता है?
- 15. libGDX में जावा थ्रेड
- 16. सार्वजनिक ऑनक्रेट(), या संरक्षित() पर संरक्षित?
- 17. रनटाइम पर, मैं जावा थ्रेड
- 18. जावा संशोधक वाक्यविन्यास और प्रारूप
- 19. क्या) थ्रेड start() और Runnable रन (के बीच अंतर
- 20. जावा या सी # के थ्रेड उपयोगकर्ता-स्पेस थ्रेड या कर्नेल-स्पेस थ्रेड पर आधारित हैं?
- 21. रन कार्य जावा, अपाचे
- 22. जावा थ्रेड के साथ असंगत परिणाम
- 23. एक संपत्ति पर प्रतिबिंब और पहुंच संशोधक
- 24. क्लासिक घटनाओं पर .NET Rx के लाभ?
- 25. टाइपक्लास पर उप-प्रकार के लाभ
- 26. क्या पर्ल नियमित अभिव्यक्तियों के लिए 'ओ' संशोधक अभी भी कोई लाभ प्रदान करता है?
- 27. कोरआउट के लाभ क्या हैं?
- 28. क्या सी # में 'नया' संशोधक के बराबर जावा है?
- 29. जावा में ओवरराइड विधि के एक्सेस संशोधक को बदलें?
- 30. जावा थ्रेड
हाँ, आप सही हैं और मुझे लगता है कि यही कारण है कि रन() सार्वजनिक विधि के रूप में है। असल में, चूंकि एक कन्स्ट्रक्टर है जो एक रननेबल तर्क लेता है - सार्वजनिक थ्रेड (रननेबल लक्ष्य), जिसे रननेबल को लागू करने की आवश्यकता को अस्वीकार कर देना चाहिए था? – gshx
यह "सलाह नहीं है"? इसके विपरीत नहीं? :-) –
धन्यवाद। एक अतिरिक्त 'नहीं' :) हटा दिया गया। – Bozho