Հիմնական տարբերություն – Runnable vs Thread
Կատարման մեջ գտնվող ծրագիրը հայտնի է որպես գործընթաց: Գործընթացը կարելի է բաժանել մի քանի ենթագործընթացների. Օրինակ, Microsoft Word-ը գործընթաց է: Միևնույն ժամանակ ստուգում է ուղղագրական սխալը և քերականությունը: Դա ենթագործընթաց է։ Այս ենթագործընթացները հայտնի են որպես թելեր: Multithreading-ը մի քանի թելեր միաժամանակ գործարկելու գործընթացն է: Թելային հավելվածները կարող են ստեղծվել տարբեր ծրագրավորման լեզուների միջոցով: Runnable-ը և Thread-ը կապված են Java ծրագրավորման հետ: Java-ում կա երկու մեթոդ՝ թեմա ստեղծելու միջոցով Runnable ինտերֆեյսի ներդրման կամ Thread դասի ընդլայնման միջոցով:Runnable-ն իրականացնելիս շատ շղթաներ կարող են կիսել նույն շղթայի օբյեկտը, մինչդեռ Extending Thread դասում յուրաքանչյուր շղթա ունի իր հետ կապված եզակի օբյեկտ: Սա Runnable-ի և Thread-ի հիմնական տարբերությունն է:
Ի՞նչ է Runnable-ը:
Մի թեմա անցնում է որոշ վիճակներով: «Նորը» թելի կյանքի ցիկլի սկիզբն է: Այն բանից հետո, երբ start() մեթոդը կանչում է նոր շարանը, այն դառնում է գործարկելի: Եթե թելերի ժամանակացույցն ընտրում է շարանը, այն անցնում է գործարկման վիճակին: The Thread-ը սպասում է վիճակին, եթե այդ շարանը սպասում է մեկ այլ շարանը՝ առաջադրանք կատարելու համար: Այն բանից հետո, երբ շարանը ավարտում է աշխատանքը, այն անցնում է ավարտման վիճակին:
Մի շարանը կարող է իրականացվել Runnable ինտերֆեյսի միջոցով: Տե՛ս ստորև ներկայացված ծրագիրը։
Նկար 01. Java ծրագիր Runnable ինտերֆեյսի միջոցով շղթա ստեղծելու համար
Ըստ վերը նշված ծրագրի՝ Runnable Demo դասը իրականացնում է Runnable ինտերֆեյսը։ Run() մեթոդը գտնվում է այն դասի ներսում, որն իրականացնում է Runnable ինտերֆեյսը: Դա թելի մուտքի կետն է: Տրամաբանությունը run() մեթոդում է: Հիմնական ծրագրում ստեղծվում է շարանը՝ որոշելով Runnable Demo դասից ստացված օբյեկտ: Դա t1 է: Start() մեթոդը կոչվում է t1-ի միջոցով:
Հղում ստորև ներկայացված ծրագրին:
Նկար 02. Java ծրագիր՝ հանգույց գործարկելու համար շղթա ստեղծելու համար՝ կիրառելով Runnable ինտերֆեյսը
Համաձայն վերոհիշյալ օրինակի՝ Runnable Demo դասը իրականացնում է Runnable ինտերֆեյս։ Թելերի միջոցով գործարկելու տրամաբանությունը գրված է run() մեթոդով: Հիմնական ծրագրում ստեղծվում է շարանը՝ որոշելով Runnable Demo դասից ստացված օբյեկտ:Դա t1 է: Այնուհետև start() մեթոդը կանչվում է՝ օգտագործելով t1:
Ի՞նչ է Թելը:
Թելա ստեղծելու մյուս մեթոդը Thread դասի ընդլայնումն է: Այն բաղկացած է երեք քայլից. Առաջինը՝ դասը հայտարարել որպես Thread դասի ընդլայնող: Այնուհետև պետք է գրվի run() մեթոդը: Այն ունի քայլերի հաջորդականությունը, որը պետք է կատարի շարանը: Ի վերջո, ստեղծվում է thread օբյեկտը, և start() մեթոդը կանչվում է՝ սկսելու thread-ի կատարումը։ Տե՛ս ստորև ներկայացված ծրագիրը։
Նկար 03. Java ծրագիր, որը ընդլայնում է Thread class
Ըստ վերոնշյալ ծրագրի՝ MyThread դասը ընդլայնում է Thread դասը։ Այն անտեսում է գործարկման մեթոդը: Run() մեթոդը պարունակում է տրամաբանություն, որը պետք է կատարվի շարանի կողմից: Դա թելի մուտքի կետն է:Այնուհետև ստեղծվում է թելի օբյեկտը: Դա շարանը 1 է: Շարանը սկսվում է start() մեթոդով: Այն կիրականացնի կանչ դեպի run() մեթոդ:
Երկու դասերի ծրագրի օրինակ, որը ընդլայնում է Thread դասը, հետևյալն է.
Նկար 04. Java ծրագիր երկու դասերով, որոնք ընդլայնում են Thread class
Ըստ վերոնշյալ ծրագրի, և՛ A, և՛ B դասերը ընդլայնում են Thread դասը: Երկու դասերն էլ ունեն run() մեթոդի իրենց ներդրումը: Հիմնական շարանը այն է, որն իրականացնում է main() մեթոդը: Մինչ հիմնական շարանը մահանում է, այն ստեղծում և սկսում է thread1 և thread2: Մինչ հիմնական շարանը հասնում է հիմնական մեթոդի ավարտին, երեք թելեր զուգահեռաբար անցնում են: Չկա կոնկրետ հերթականություն, որով թելերը ելք են տալիս: Հենց որ շարանը սկսվի, դժվար է որոշել, թե որ կարգը նրանք կկատարեն:Նրանք վազում են ինքնուրույն։
Որո՞նք են նմանությունները Runnable-ի և Thread-ի միջև:
Երկուսն էլ օգտագործում են Java-ում թեմա ստեղծելու համար:
Ո՞րն է տարբերությունը Runnable-ի և Thread-ի միջև:
Runnable vs Thread |
|
Runnable-ը Java-ում ինտերֆեյս է, որը ստեղծում է շղթա, որը թույլ է տալիս բազմաթիվ շղթաների կիսել նույն շղթայի օբյեկտը: | Թելը Java-ում դաս է, որը ստեղծում է շղթա, որտեղ յուրաքանչյուր շղթա ունի իր հետ կապված եզակի օբյեկտ: |
Հիշողություն | |
Runnable-ում մի քանի շղթաներ կիսում են նույն օբյեկտը, ուստի պահանջում են ավելի քիչ հիշողություն: | Thread դասում յուրաքանչյուր շարանը ստեղծում է յուրահատուկ օբյեկտ, հետևաբար պահանջում է ավելի շատ հիշողություն: |
Ընդլայնման կարողություն | |
Runnable ինտերֆեյսի ներդրումից հետո այն կարող է ընդլայնել դասը: | Բազմաթիվ ժառանգություններ Java-ում չեն աջակցվում: Thread դասը ընդլայնելուց հետո այն չի կարող ընդլայնել որևէ այլ դաս: |
Կոդի պահպանում | |
Runnable ինտերֆեյսը կոդն ավելի պահպանելի է դարձնում: | Thread դասում պահպանելը ժամանակատար է: |
Ամփոփում – Runnable vs Thread
Գործընթացը բաժանված է մի քանի ենթագործընթացների՝ միաժամանակ մի քանի առաջադրանքներ կատարելու համար: Այս ենթագործընթացները հայտնի են որպես թելեր: Թեմա ստեղծելը կարող է իրականացվել Runnable ինտերֆեյսի ներդրման կամ Thread Class-ի ընդլայնման միջոցով: Հեշտ է ընդլայնել Thread դասը, բայց դա ավելի լավ Օբյեկտ-կողմնորոշված ծրագրավորման պրակտիկա չէ:Runnable-ն իրականացնելիս շատ շղթաներ կարող են կիսել նույն շղթայի օբյեկտը, մինչդեռ Thread դասի ընդլայնման դեպքում յուրաքանչյուր շղթա ունի իր հետ կապված եզակի օբյեկտ: Դա Runnable-ի և Thread-ի տարբերությունն է: Thread դասում բազմաթիվ օբյեկտների ստեղծումը կարող է ավելի շատ հիշողություն սպառել:
Ներբեռնեք Runnable vs Thread-ի PDF-ը
Դուք կարող եք ներբեռնել այս հոդվածի PDF տարբերակը և օգտագործել այն անցանց նպատակներով՝ ըստ մեջբերումների: Խնդրում ենք ներբեռնել PDF տարբերակը այստեղ Տարբերությունը Runnable-ի և Thread-ի միջև