జావాలో థ్రెడ్ క్లాస్ మరియు రన్ చేయగల ఇంటర్ఫేస్ మధ్య వ్యత్యాసం
విషయము
- పోలిక చార్ట్
- థ్రెడ్ క్లాస్ యొక్క నిర్వచనం
- రన్ చేయగల ఇంటర్ఫేస్ యొక్క నిర్వచనం
- జావాలో థ్రెడ్ మరియు రన్ చేయదగిన మధ్య తేడాలు
- ముగింపు:
ఒక థ్రెడ్ను రెండు విధాలుగా నిర్వచించవచ్చు. మొదట, ద్వారా థ్రెడ్ తరగతిని విస్తరిస్తోంది ఇది ఇప్పటికే రన్ చేయగల ఇంటర్ఫేస్ను అమలు చేసింది. రెండవది, నేరుగా రన్ చేయగల ఇంటర్ఫేస్ను అమలు చేస్తోంది. థ్రెడ్ క్లాస్ను విస్తరించడం ద్వారా మీరు థ్రెడ్ను నిర్వచించినప్పుడు మీరు థ్రెడ్ క్లాస్లో రన్ () పద్ధతిని భర్తీ చేయాలి. రన్ చేయదగిన ఇంటర్ఫేస్ను అమలు చేసే థ్రెడ్ను మీరు నిర్వచించినప్పుడు, మీరు రన్ చేయగల ఇంటర్ఫేస్ యొక్క ఏకైక రన్ () పద్ధతిని అమలు చేయాలి. థ్రెడ్ మరియు రన్నబుల్ మధ్య ప్రాథమిక వ్యత్యాసం ఏమిటంటే, థ్రెడ్ క్లాస్ను విస్తరించడం ద్వారా నిర్వచించబడిన ప్రతి థ్రెడ్ ఒక ప్రత్యేకమైన వస్తువును సృష్టిస్తుంది మరియు ఆ వస్తువుతో సంబంధం కలిగి ఉంటుంది. మరోవైపు, రన్ చేయగల ఇంటర్ఫేస్ను అమలు చేయడం ద్వారా నిర్వచించబడిన ప్రతి థ్రెడ్ ఒకే వస్తువును పంచుకుంటుంది.
దిగువ చూపిన పోలిక చార్ట్ సహాయంతో థ్రెడ్ మరియు రన్నబుల్ మధ్య కొన్ని ఇతర తేడాలను పరిశీలిద్దాం:
- పోలిక చార్ట్
- నిర్వచనం
- కీ తేడాలు
- ముగింపు
పోలిక చార్ట్
పోలిక కోసం ఆధారం | Thread | runnable |
---|---|---|
ప్రాథమిక | ప్రతి థ్రెడ్ ఒక ప్రత్యేకమైన వస్తువును సృష్టిస్తుంది మరియు దానితో సంబంధం కలిగి ఉంటుంది. | బహుళ థ్రెడ్లు ఒకే వస్తువులను పంచుకుంటాయి. |
మెమరీ | ప్రతి థ్రెడ్ ప్రత్యేకమైన వస్తువును సృష్టించినప్పుడు, ఎక్కువ మెమరీ అవసరం. | బహుళ థ్రెడ్లు ఒకే వస్తువును పంచుకున్నప్పుడు తక్కువ మెమరీ ఉపయోగించబడుతుంది. |
పొడిగించడం | జావాలో, బహుళ వారసత్వం అనుమతించబడదు, ఒక తరగతి థ్రెడ్ తరగతిని విస్తరించిన తర్వాత, అది వేరే తరగతిని పొడిగించదు. | రన్ చేయదగిన ఇంటర్ఫేస్ను అమలు చేస్తున్న థ్రెడ్ను ఒక తరగతి నిర్వచించినట్లయితే, అది ఒక తరగతిని విస్తరించే అవకాశం ఉంది. |
వా డు | థ్రెడ్ క్లాస్లోని ఇతర పద్ధతులను భర్తీ చేయాలనుకుంటే మాత్రమే వినియోగదారు థ్రెడ్ క్లాస్ని పొడిగించాలి. | మీరు రన్ పద్ధతిని మాత్రమే ప్రత్యేకపరచాలనుకుంటే, రన్నేబుల్ను అమలు చేయడం మంచి ఎంపిక. |
కలుపుట | థ్రెడ్ క్లాస్ను విస్తరించడం వలన క్లాస్ థ్రెడ్ క్లాస్ యొక్క కోడ్ను కలిగి ఉంటుంది మరియు థ్రెడ్కు కేటాయించిన ఉద్యోగం కూడా ఉంటుంది | రన్ చేయదగిన ఇంటర్ఫేస్ను అమలు చేయడం థ్రెడ్ యొక్క కోడ్ థ్రెడ్ల యొక్క పనిగా ఉన్నందున వదులుగా కలపడం పరిచయం చేస్తుంది. |
థ్రెడ్ క్లాస్ యొక్క నిర్వచనం
Thread లో ఒక తరగతి అత్యధిక java.lang ప్యాకేజీ. థ్రెడ్ క్లాస్ విస్తరించింది ఆబ్జెక్ట్ తరగతి, మరియు అది అమలు చేస్తుంది runnable ఇంటర్ఫేస్లు. థ్రెడ్ క్లాస్లో కన్స్ట్రక్టర్లు మరియు థ్రెడ్ను రూపొందించడానికి మరియు పనిచేయడానికి పద్ధతులు ఉన్నాయి. మేము బహుళ థ్రెడ్లను సృష్టించినప్పుడు, ప్రతి థ్రెడ్ ఒక ప్రత్యేకమైన వస్తువును సృష్టిస్తుంది మరియు ఆ వస్తువుతో సంబంధం కలిగి ఉంటుంది. మీరు థ్రెడ్ క్లాస్ను విస్తరించే థ్రెడ్ను సృష్టిస్తే, జావా బహుళ వారసత్వానికి మద్దతు ఇవ్వనందున మీరు వేరే తరగతిని పొడిగించలేరు. కాబట్టి, మీరు థ్రెడ్ క్లాస్ యొక్క కొన్ని ఇతర పద్ధతులను కూడా భర్తీ చేయాలనుకున్నప్పుడు మాత్రమే మీరు థ్రెడ్ క్లాస్ను విస్తరించడానికి ఎంచుకోవాలి. థ్రెడ్ క్లాస్ను విస్తరించే థ్రెడ్ను సృష్టించే ఉదాహరణ చూద్దాం.
/ * థ్రెడ్ను నిర్వచించడం * / క్లాస్ మిథ్రెడ్ థ్రెడ్ యొక్క విస్తరణ * / * థ్రెడ్ యొక్క పని * / పబ్లిక్ శూన్యత రన్ () {(int i = 0; i <10; i ++) {System.Out.ln ("చైల్డ్ థ్రెడ్" ); Main} క్లాస్ మెయిన్ థ్రెడ్ main / * మెయిన్ థ్రెడ్ యొక్క ఉద్యోగం * / పబ్లిక్ స్టాటిక్ వాయిడ్ మెయిన్ (స్ట్రింగ్ అర్గ్స్) {మిథ్రెడ్ mt = కొత్త మిథ్రెడ్ (); / * ప్రధాన థ్రెడ్ చైల్డ్ థ్రెడ్ను సృష్టించింది * / mt.start (); (int i = 0; i <10; i ++) {System.Out. ("ప్రధాన థ్రెడ్"); Th}} / * అవుట్పుట్ * / మెయిన్ థ్రెడ్ మెయిన్ థ్రెడ్ మెయిన్ థ్రెడ్ చైల్డ్ థ్రెడ్ చైల్డ్ థ్రెడ్ చైల్డ్ థ్రెడ్ చైల్డ్ థ్రెడ్ మెయిన్ థ్రెడ్ చైల్డ్ థ్రెడ్ మెయిన్ థ్రెడ్ చైల్డ్ థ్రెడ్ చైల్డ్ థ్రెడ్ మెయిన్ థ్రెడ్ మెయిన్ థ్రెడ్ చైల్డ్ థ్రెడ్ చైల్డ్ థ్రెడ్
పై కోడ్లో, నేను థ్రెడ్ క్లాస్ని విస్తరించి, థ్రెడ్ క్లాస్ యొక్క రన్ పద్ధతిని భర్తీ చేసే క్లాస్ మిథ్రెడ్ను సృష్టిస్తాను. ప్రధాన పద్ధతిని కలిగి ఉన్న తరగతిలో నేను మైథ్రెడ్ క్లాస్ యొక్క థ్రెడ్ ఆబ్జెక్ట్ (mt) ను సృష్టిస్తాను మరియు థ్రెడ్ ఆబ్జెక్ట్ ఉపయోగించి ప్రారంభ () పద్ధతిని ప్రారంభించాను. ప్రారంభ పద్ధతి థ్రెడ్ యొక్క అమలును ప్రారంభిస్తుంది మరియు అదే సమయంలో JVM థ్రెడ్ యొక్క రన్ పద్ధతిని ప్రారంభిస్తుంది. ఇప్పుడు ప్రోగ్రామ్లో రెండు థ్రెడ్లు ఒక ప్రధాన థ్రెడ్ మరియు రెండవ థ్రెడ్ ప్రధాన థ్రెడ్ చేత సృష్టించబడ్డాయి. రెండు థ్రెడ్ల అమలు ఒకేసారి జరుగుతుంది, కానీ, ఖచ్చితమైన అవుట్పుట్ నటించబడదు.
రన్ చేయగల ఇంటర్ఫేస్ యొక్క నిర్వచనం
runnable లో ఇంటర్ఫేస్ అత్యధిక java.lang ప్యాకేజీ. రన్ చేయగల ఇంటర్ఫేస్ను అమలు చేయడం మేము థ్రెడ్ను నిర్వచించగలము. రన్ చేయగల ఇంటర్ఫేస్ ఒకే పద్ధతిని కలిగి ఉంది రన్ (), ఇది రన్ చేయగల ఇంటర్ఫేస్ను అమలు చేసే తరగతిచే అమలు చేయబడుతుంది. రన్ చేయదగిన ఇంటర్ఫేస్ను అమలు చేసే థ్రెడ్ను నిర్వచించడానికి మీరు ఎంచుకున్నప్పుడు, మరే ఇతర తరగతిని విస్తరించడానికి మీకు ఇంకా ఎంపిక ఉంది. రన్ చేయగల ఇంటర్ఫేస్ను అమలు చేయడం ద్వారా మీరు బహుళ థ్రెడ్లను సృష్టించినప్పుడు, ప్రతి థ్రెడ్ ఒకే రన్ చేయదగిన ఉదాహరణను పంచుకుంటుంది. రన్ చేయదగిన ఇంటర్ఫేస్ ఉపయోగించి థ్రెడ్ను ఎలా నిర్వచించాలో తెలుసుకుందాం.
/ * థ్రెడ్ను నిర్వచించడం * / క్లాస్ రన్నేబుల్ థ్రెడ్ అమలు చేయగల {/ * థ్రెడ్ యొక్క పని * / పబ్లిక్ శూన్యత రన్ () {(int i = 0; i <10; i ++) {System.Out.ln ("చైల్డ్ థ్రెడ్" ); Main} క్లాస్ మెయిన్ థ్రెడ్ main / * మెయిన్ థ్రెడ్ యొక్క పని * / పబ్లిక్ స్టాటిక్ వాయిడ్ మెయిన్ (స్ట్రింగ్ అర్గ్స్) {మిథ్రెడ్ rt = కొత్త మిథ్రెడ్ (); / * ప్రధాన థ్రెడ్ రన్ చేయదగిన వస్తువును సృష్టించింది * / థ్రెడ్ t = కొత్త థ్రెడ్ (rt); / * ప్రధాన థ్రెడ్ చైల్డ్ థ్రెడ్ను సృష్టిస్తుంది మరియు అమలు చేయదగిన వస్తువును దాటింది * / t.start (); (int i = 0; i <10; i ++) {System.Out. ("ప్రధాన థ్రెడ్"); Th}} / * అవుట్పుట్ * / మెయిన్ థ్రెడ్ మెయిన్ థ్రెడ్ మెయిన్ థ్రెడ్ చైల్డ్ థ్రెడ్ చైల్డ్ థ్రెడ్ చైల్డ్ థ్రెడ్ చైల్డ్ థ్రెడ్ మెయిన్ థ్రెడ్ చైల్డ్ థ్రెడ్ మెయిన్ థ్రెడ్ చైల్డ్ థ్రెడ్ చైల్డ్ థ్రెడ్ మెయిన్ థ్రెడ్ మెయిన్ థ్రెడ్ చైల్డ్ థ్రెడ్ చైల్డ్ థ్రెడ్
పై కోడ్లో, నేను రన్నబుల్ ఇంటర్ఫేస్ను అమలు చేసే క్లాస్ రన్నేబుల్థ్రెడ్ను సృష్టించాను మరియు రన్ చేయగల ఇంటర్ఫేస్ యొక్క రన్ () పద్ధతిని అమలు చేయడం ద్వారా థ్రెడ్ యొక్క పనిని నిర్వచిస్తుంది. అప్పుడు నేను ప్రధాన పద్ధతిని కలిగి ఉన్న క్లాస్ మెయిన్థ్రెడ్ను సృష్టిస్తాను. ప్రధాన పద్ధతి లోపల, నేను రన్ చేయదగిన థ్రెడ్ క్లాస్ యొక్క రన్ చేయదగిన వస్తువును ప్రకటించాను మరియు థ్రెడ్ను ప్రకటించేటప్పుడు ఈ వస్తువును థ్రెడ్ యొక్క కన్స్ట్రక్టర్కు పంపించాను. ఈ విధంగా, నేను థ్రెడ్ ఆబ్జెక్ట్ (టి) ను రన్ చేయదగిన వస్తువు (rt) తో లింక్ చేసాను. అప్పుడు థ్రెడ్ ఆబ్జెక్ట్ థ్రెడ్ యొక్క ప్రారంభ పద్ధతిని ప్రారంభిస్తుంది, ఇది రన్నబుల్ థ్రెడ్ క్లాస్ యొక్క రన్ పద్ధతిని మరింత ప్రారంభిస్తుంది. నేను రన్ చేయదగిన వస్తువును థ్రెడ్ ఆబ్జెక్ట్తో లింక్ చేయకపోతే, థ్రెడ్ల ప్రారంభ పద్ధతి థ్రెడ్ క్లాస్ యొక్క రన్ పద్ధతిని ప్రారంభిస్తుంది. ఇప్పుడు, మళ్ళీ కోడ్లో రెండు థ్రెడ్లు ఉన్నాయి, మెయిన్ థ్రెడ్ మరియు మెయిన్ థ్రెడ్ చైల్డ్ థ్రెడ్ను సృష్టిస్తుంది, రెండూ ఒకేసారి అమలు అవుతాయి కాని ఖచ్చితమైన అవుట్పుట్ ఎప్పుడూ నటించదు.
జావాలో థ్రెడ్ మరియు రన్ చేయదగిన మధ్య తేడాలు
- థ్రెడ్ తరగతిని విస్తరించడం ద్వారా సృష్టించబడిన ప్రతి థ్రెడ్ దాని కోసం ఒక ప్రత్యేకమైన వస్తువును సృష్టిస్తుంది మరియు ఆ వస్తువుతో సంబంధం కలిగి ఉంటుంది. మరోవైపు, రన్ చేయగల ఇంటర్ఫేస్ను అమలు చేయడం ద్వారా సృష్టించబడిన ప్రతి థ్రెడ్ ఒకే రన్ చేయదగిన ఉదాహరణను పంచుకుంటుంది.
- థ్రెడ్ క్లాస్ను విస్తరించడం ద్వారా సృష్టించబడినప్పుడు ప్రతి థ్రెడ్ ప్రత్యేకమైన వస్తువుతో అనుబంధించబడినందున, ఎక్కువ మెమరీ అవసరం. మరోవైపు, రన్ చేయగల ఇంటర్ఫేస్ను అమలు చేయడం ద్వారా సృష్టించబడిన ప్రతి థ్రెడ్ ఒకే వస్తువు స్థలాన్ని పంచుకుంటుంది, అందువల్ల దీనికి తక్కువ మెమరీ అవసరం.
- మీరు థ్రెడ్ తరగతిని విస్తరిస్తే, జావా బహుళ వారసత్వాన్ని అనుమతించనందున మీరు ఏ ఇతర తరగతిని వారసత్వంగా పొందవచ్చు, అయితే రన్నేబుల్ను అమలు చేయడం వల్ల తరగతికి ఇతర తరగతులను వారసత్వంగా పొందే అవకాశం లభిస్తుంది.
- థ్రెడ్ క్లాస్ యొక్క కొన్ని ఇతర పద్ధతులను భర్తీ చేయవలసి లేదా ప్రత్యేకత కలిగి ఉంటేనే థ్రెడ్ క్లాస్ను విస్తరించాలి. మీరు రన్ పద్ధతిని మాత్రమే ప్రత్యేకపరచాలనుకుంటే మీరు తప్పక రన్ చేయగల ఇంటర్ఫేస్ను అమలు చేయాలి.
- థ్రెడ్ క్లాస్ను విస్తరించడం వల్ల థ్రెడ్ కోడ్ మరియు థ్రెడ్ యొక్క ఉద్యోగం ఒకే తరగతి కలిగి ఉన్నందున కోడ్లో గట్టి కలపడం పరిచయం అవుతుంది. మరోవైపు, అమలు చేయగల ఇంటర్ఫేస్ను థ్రెడ్కు కేటాయించిన ఉద్యోగం నుండి థ్రెడ్ కోడ్ వేరుచేయబడినందున కోడ్లో వదులుగా కలపడం పరిచయం చేస్తుంది.
ముగింపు:
థ్రెడ్ క్లాస్ను విస్తరించడానికి బదులుగా రన్ చేయగల ఇంటర్ఫేస్ను అమలు చేయడానికి ఇది ప్రాధాన్యత ఇవ్వబడుతుంది. రన్నేబుల్ను అమలు చేస్తున్నప్పుడు థ్రెడ్కు ఉద్యోగం కేటాయించే తరగతికి భిన్నంగా థ్రెడ్ కోడ్ భిన్నంగా ఉన్నందున మీ కోడ్ను వదులుగా కలుపుతుంది. దీనికి తక్కువ మెమరీ అవసరం మరియు ఒక తరగతి ఇతర తరగతిని వారసత్వంగా పొందటానికి కూడా అనుమతిస్తుంది.