जावा मधील थ्रेड क्लास आणि चालण्यायोग्य इंटरफेस दरम्यान फरक

लेखक: Laura McKinney
निर्मितीची तारीख: 1 एप्रिल 2021
अद्यतन तारीख: 17 मे 2024
Anonim
जावा मधील थ्रेड क्लास आणि चालण्यायोग्य इंटरफेस दरम्यान फरक - तंत्रज्ञान
जावा मधील थ्रेड क्लास आणि चालण्यायोग्य इंटरफेस दरम्यान फरक - तंत्रज्ञान

सामग्री


एक धागा दोन प्रकारे परिभाषित केला जाऊ शकतो. प्रथम, करून थ्रेड क्लास वाढवित आहे ज्याने यापूर्वीच चालण्यायोग्य इंटरफेस लागू केला आहे. दुसरे म्हणजे थेट चालण्यायोग्य इंटरफेस लागू करत आहे. जेव्हा आपण थ्रेड क्लास वाढवून थ्रेड परिभाषित करता तेव्हा आपल्याला धागा वर्गात रन () पद्धत अधिलिखित करावी लागते. जेव्हा आपण धावण्‍यायोग्य इंटरफेसची अंमलबजावणी करणारा थ्रेड परिभाषित करता तेव्हा आपणास रननेबल इंटरफेसची एकमेव रन () पद्धत लागू करावी लागेल. थ्रेड आणि रननेबल दरम्यान मूलभूत फरक म्हणजे थ्रेड क्लास वाढवून परिभाषित केलेला प्रत्येक धागा एक अनोखा ऑब्जेक्ट तयार करतो आणि त्या ऑब्जेक्टशी संबंधित होतो. दुसरीकडे, रननेबल इंटरफेस लागू करून परिभाषित केलेला प्रत्येक थ्रेड समान ऑब्जेक्ट सामायिक करतो.

खाली दर्शविलेल्या तुलना चार्टच्या मदतीने थ्रेड आणि रननेबल दरम्यानचे काही भिन्न फरक पाहू:

  1. तुलना चार्ट
  2. व्याख्या
  3. मुख्य फरक
  4. निष्कर्ष

तुलना चार्ट

तुलनासाठी आधारधागाचालू
मूलभूतप्रत्येक धागा एक अद्वितीय ऑब्जेक्ट तयार करतो आणि त्याच्याशी संबंधित होतो.एकाधिक थ्रेड समान ऑब्जेक्ट्स सामायिक करतात.
मेमरी प्रत्येक धागा एक अद्वितीय ऑब्जेक्ट तयार करीत असताना, अधिक मेमरी आवश्यक आहे.एकाधिक थ्रेड्स समान ऑब्जेक्ट सामायिक केल्यामुळे कमी मेमरी वापरली जाते.
वाढवित आहेजावा मध्ये, एकाधिक वारशास परवानगी नाही, वर्ग थ्रेड क्लास वाढविल्यानंतर, तो इतर कोणत्याही वर्गास वाढवू शकत नाही.जर एखादे वर्ग धावणारा चालू इंटरफेस लागू करणारा धागा परिभाषित करतो तर त्याला एक वर्ग वाढविण्याची संधी आहे.
वापरा वापरकर्त्यास थ्रेड वर्गामधील इतर पद्धती अधिलिखित करायच्या असतील तरच थ्रेड क्लास वाढविणे आवश्यक आहे.जर आपल्याला फक्त धावण्याच्या पद्धतीची खासियत पाहिजे असेल तर तर रननेबलची अंमलबजावणी करणे हा एक चांगला पर्याय आहे.
कपलिंग थ्रेड वर्गामध्ये विस्तारित घट्ट जोड्या लावतात कारण वर्गात थ्रेड क्लासचा कोड असतो आणि थ्रेडला दिलेली जॉब देखील असतेकार्यान्वित करण्यायोग्य इंटरफेसमध्ये सैल कपलिंगचा परिचय आहे कारण थ्रेडची कोड थ्रेड्सची नोकरी वेगळी आहे.


थ्रेड क्लासची व्याख्या

धागा मध्ये एक वर्ग आहे java.lang पॅकेज थ्रेड वर्ग एक वाढवितो ऑब्जेक्ट वर्ग, आणि अंमलबजावणी चालू इंटरफेस. थ्रेड वर्गाकडे धागा तयार आणि ऑपरेट करण्यासाठी कन्स्ट्रक्टर आणि पद्धती आहेत. जेव्हा आम्ही अनेक थ्रेड तयार करतो, तेव्हा प्रत्येक धागा एक अनोखा ऑब्जेक्ट तयार करतो आणि त्या ऑब्जेक्टशी संबंधित होतो. जर आपण थ्रेडचा विस्तार करणारा धागा तयार केला तर पुढे आपण इतर कोणत्याही वर्गास वाढवू शकत नाही कारण जावा एकाधिक वारशास समर्थन देत नाही. म्हणूनच जेव्हा आपण थ्रेड वर्गाच्या काही इतर पद्धती अधिलिखित करू इच्छित असाल तेव्हाच आपण थ्रेड क्लास वाढविणे निवडले पाहिजे. थ्रेड क्लास वाढविणारा थ्रेड तयार करण्याचे उदाहरण पाहू.

/ * थ्रेड परिभाषित करणे * / क्लास मिथ्रेडचा धागा {/ * थ्रेडचा जॉब * / पब्लिक रिक्त रन () {साठी (इंट i = 0; i <10; i ++) {सिस्टम.ओउट.एलएन ("चाइल्ड थ्रेड") ); Main} क्लास मेनथ्रेड {/ * मुख्य थ्रेडची नोकरी * / पब्लिक स्टॅटिक शून्य मुख्य (स्ट्रिंग आर्ट्स) {मिथ्रेड एमटी = नवीन मिथ्रेड (); / * मुख्य थ्रेडने मुलाचा धागा तयार केला * / mt.start (); (इंट i = 0; i <10; i ++) {सिस्टम.आउट. ("मुख्य थ्रेड"); }} / * आउटपुट * / मुख्य धागा मुख्य धागा मुख्य धागा मुख्य धागा मुलाचा धागा मुलाचा धागा मुलाचा धागा मुलाचा धागा मुख्य धागा मुलाचा धागा मुख्य धागा मुख्य धागा मुलाचा धागा मुख्य धागा मुख्य धागा मुलाचा धागा मुलाचा धागा मुख्य धागा

वरील कोडमध्ये मी मायथ्रेड हा एक क्लास तयार करतो जो थ्रेड क्लास वाढवितो आणि थ्रेड क्लासची धावण्याची पद्धत अधिलिखित करतो. मुख्य पद्धती असलेल्या वर्गात मी मिथ्रीड क्लासचा थ्रेड ऑब्जेक्ट (एमटी) तयार करतो आणि थ्रेड ऑब्जेक्टचा वापर करून प्रारंभ () पद्धत वापरली. प्रारंभ पद्धत धाग्याची अंमलबजावणी सुरू करते आणि त्याच वेळी जेव्हीएम थ्रेडची धावण्याची पद्धत विनंती करते. आता प्रोग्राममध्ये दोन थ्रेड्स आहेत, एक मुख्य धागा आणि दुसरा चाइल्ड थ्रेड मुख्य थ्रेडद्वारे निर्मित. दोन्ही थ्रेडची अंमलबजावणी एकाच वेळी होते, परंतु, अचूक आउटपुट दर्शविले जाऊ शकत नाही.


चालू असलेल्या इंटरफेसची व्याख्या

चालू मध्ये एक इंटरफेस आहे java.lang पॅकेज कार्यान्वित करण्यायोग्य इंटरफेस आम्ही एक धागा परिभाषित करू शकतो. चालण्यायोग्य इंटरफेसमध्ये एक पद्धत आहे चालवा (), ज्याची अंमलबजावणी क्लासद्वारे केली जाते जी चालू असलेल्या इंटरफेसची अंमलबजावणी करते. जेव्हा आपण चालू असलेल्या इंटरफेसची अंमलबजावणी करण्यासाठी धागा परिभाषित करता तेव्हा आपल्याकडे अद्याप कोणताही वर्ग वाढविण्याचा पर्याय असतो. जेव्हा आपण चालण्यायोग्य इंटरफेसची अंमलबजावणी करून अनेक थ्रेड्स तयार करता, तेव्हा प्रत्येक धागा समान चालण्यायोग्य घटना सामायिक करतो. रननेबल इंटरफेसद्वारे थ्रेड कसे परिभाषित करायचे ते शिकू.

/ * धागा परिभाषित करणे * / वर्ग रननेबल थ्रेडची अंमलबजावणी चालू धागा * / पब्लिक रिक्त रन () of साठी (इंट i = 0; i <10; i ++) {सिस्टम.ओउट.एलएन ("चाइल्ड थ्रेड") ); Main} क्लास मेनथ्रेड {/ * मुख्य थ्रेडची नोकरी * / पब्लिक स्टॅटिक शून्य मुख्य (स्ट्रिंग आर्ट्स) {मिथ्रेड आरटी = नवीन मिथ्रेड (); / * मुख्य धागाने चालण्यायोग्य ऑब्जेक्ट तयार केला * / थ्रेड टी = नवीन थ्रेड (आरटी); / * मुख्य थ्रेड चाइल्ड थ्रेड तयार करतो आणि धावण्यायोग्य ऑब्जेक्ट * / t.start () पास करतो; (इंट i = 0; i <10; i ++) {सिस्टम.आउट. ("मुख्य थ्रेड"); }} / * आउटपुट * / मुख्य धागा मुख्य धागा मुख्य धागा मुख्य धागा मुलाचा धागा मुलाचा धागा मुलाचा धागा मुलाचा धागा मुख्य धागा मुलाचा धागा मुख्य धागा मुख्य धागा मुलाचा धागा मुख्य धागा मुख्य धागा मुलाचा धागा मुलाचा धागा मुख्य धागा

उपरोक्त कोडमध्ये, मी रननेबलथ्रेड एक वर्ग तयार केला जो रननेबल इंटरफेसची अंमलबजावणी करतो आणि रननेबल इंटरफेसची रन () पद्धत लागू करून थ्रेडचे कार्य परिभाषित करतो. मग मी मुख्य पद्धत असलेली एक वर्ग मेनथ्रेड तयार करतो. मुख्य पद्धतीच्या आत, मी रननेबल थ्रेडच्या वर्गातील चालण्यायोग्य ऑब्जेक्ट घोषित केले आणि थ्रेड घोषित करताना ही ऑब्जेक्ट थ्रेडच्या कन्स्ट्रक्टरकडे दिली. अशा प्रकारे, मी धागा ऑब्जेक्ट (टी) ला चालू असलेल्या वस्तू (आरटी) शी जोडले. नंतर थ्रेड ऑब्जेक्ट धागा सुरू करण्याची पद्धत विनंती करते जे पुढे रननेबलथ्रेड वर्गाच्या रन मेथडची विनंती करते. जर मी धावण्यायोग्य ऑब्जेक्टला थ्रेड ऑब्जेक्टशी जोडले नसते, तर थ्रेड्स प्रारंभ करण्याच्या पद्धतींनी थ्रेड क्लासची रन पद्धत वापरली असता. आता पुन्हा कोडमध्ये दोन थ्रेड्स आहेत, मुख्य थ्रेड आणि मुख्य थ्रेड चाइल्ड थ्रेड बनवितो की दोघे एकाच वेळी एक्जीक्यूट होतील परंतु अचूक आउटपुट कधीच दाखविला जाऊ शकत नाही.

जावा मधील धागा आणि चालण्यायोग्य दरम्यानचे मुख्य फरक

  1. थ्रेड वर्गाचा विस्तार करून तयार केलेला प्रत्येक धागा त्याकरिता एक अद्वितीय ऑब्जेक्ट तयार करतो आणि त्या ऑब्जेक्टशी संबंधित होतो. दुसरीकडे, चालवण्यायोग्य इंटरफेसची अंमलबजावणी करून तयार केलेला प्रत्येक धागा समान चालण्यायोग्य घटना सामायिक करतो.
  2. थ्रेड क्लास वाढवून तयार करताना प्रत्येक थ्रेड अद्वितीय ऑब्जेक्टशी संबंधित असल्याने अधिक मेमरी आवश्यक आहे. दुसरीकडे, धावण्यायोग्य इंटरफेसची अंमलबजावणी करून तयार केलेला प्रत्येक थ्रेड समान ऑब्जेक्ट स्पेस सामायिक करतो, त्यास कमी मेमरी आवश्यक आहे.
  3. जर तुम्ही थ्रेड क्लास वाढवला तर तुम्ही इतर कोणत्याही वर्गाचा वारसा घेऊ शकता कारण जावा एकापेक्षा जास्त वारसा घेण्यास परवानगी देत ​​नाही, तर, रॅनएबलची अंमलबजावणी करणे अजूनही वर्गास अन्य कोणत्याही वर्गाचा वारसा मिळण्याची संधी प्रदान करते.
  4. एखाद्याने थ्रेड वर्गाच्या काही पद्धती खोडून पुन्हा लिहाव्यात किंवा तज्ञासाठी काम केले असेल तरच थ्रेड क्लास वाढविणे आवश्यक आहे. आपल्याला केवळ धावण्याच्या पद्धतीमध्ये विशेषीकरण करायचे असल्यास आपण चालण्यायोग्य इंटरफेसची अंमलबजावणी करणे आवश्यक आहे.
  5. थ्रेड वर्गाचा विस्तार केल्याने कोडमध्ये घट्ट जोड्या लावल्या जातात कारण थ्रेडचा कोड आणि थ्रेडची नोकरी एकाच वर्गात असते. दुसरीकडे, कार्यान्वित करण्यायोग्य इंटरफेस कोडमध्ये सैल कपलिंगचा परिचय देते कारण थ्रेडचा कोड थ्रेडला नियुक्त केलेल्या जॉबमधून वेगळा होतो.

निष्कर्ष:

थ्रेड क्लास वाढविण्याऐवजी रननेबल इंटरफेस लागू करणे अधिक श्रेयस्कर आहे. धावणूकीची अंमलबजावणी केल्याने आपला कोड हळुवारपणे जोडला जातो कारण धाग्याचा कोड थ्रेडला नियुक्त करणार्या वर्गापेक्षा वेगळा आहे. यासाठी कमी मेमरी आवश्यक आहे आणि वर्गास इतर कोणत्याही वर्गाचा वारसा मिळण्यास देखील अनुमती देते.