Տարբերություն Runnable-ի և Thread-ի միջև

Բովանդակություն:

Տարբերություն Runnable-ի և Thread-ի միջև
Տարբերություն Runnable-ի և Thread-ի միջև

Video: Տարբերություն Runnable-ի և Thread-ի միջև

Video: Տարբերություն Runnable-ի և Thread-ի միջև
Video: Ինչպես գրել ասպեկտներ Spring AOP-ով [Spring AOP ճամփորդություն - Մաս 1] 2024, Հուլիսի
Anonim

Հիմնական տարբերություն – Runnable vs Thread

Կատարման մեջ գտնվող ծրագիրը հայտնի է որպես գործընթաց: Գործընթացը կարելի է բաժանել մի քանի ենթագործընթացների. Օրինակ, Microsoft Word-ը գործընթաց է: Միևնույն ժամանակ ստուգում է ուղղագրական սխալը և քերականությունը: Դա ենթագործընթաց է։ Այս ենթագործընթացները հայտնի են որպես թելեր: Multithreading-ը մի քանի թելեր միաժամանակ գործարկելու գործընթացն է: Թելային հավելվածները կարող են ստեղծվել տարբեր ծրագրավորման լեզուների միջոցով: Runnable-ը և Thread-ը կապված են Java ծրագրավորման հետ: Java-ում կա երկու մեթոդ՝ թեմա ստեղծելու միջոցով Runnable ինտերֆեյսի ներդրման կամ Thread դասի ընդլայնման միջոցով:Runnable-ն իրականացնելիս շատ շղթաներ կարող են կիսել նույն շղթայի օբյեկտը, մինչդեռ Extending Thread դասում յուրաքանչյուր շղթա ունի իր հետ կապված եզակի օբյեկտ: Սա Runnable-ի և Thread-ի հիմնական տարբերությունն է:

Ի՞նչ է Runnable-ը:

Մի թեմա անցնում է որոշ վիճակներով: «Նորը» թելի կյանքի ցիկլի սկիզբն է: Այն բանից հետո, երբ start() մեթոդը կանչում է նոր շարանը, այն դառնում է գործարկելի: Եթե թելերի ժամանակացույցն ընտրում է շարանը, այն անցնում է գործարկման վիճակին: The Thread-ը սպասում է վիճակին, եթե այդ շարանը սպասում է մեկ այլ շարանը՝ առաջադրանք կատարելու համար: Այն բանից հետո, երբ շարանը ավարտում է աշխատանքը, այն անցնում է ավարտման վիճակին:

Մի շարանը կարող է իրականացվել Runnable ինտերֆեյսի միջոցով: Տե՛ս ստորև ներկայացված ծրագիրը։

Տարբերությունը Runnable-ի և Thread-ի միջև
Տարբերությունը Runnable-ի և Thread-ի միջև

Նկար 01. Java ծրագիր Runnable ինտերֆեյսի միջոցով շղթա ստեղծելու համար

Ըստ վերը նշված ծրագրի՝ Runnable Demo դասը իրականացնում է Runnable ինտերֆեյսը։ Run() մեթոդը գտնվում է այն դասի ներսում, որն իրականացնում է Runnable ինտերֆեյսը: Դա թելի մուտքի կետն է: Տրամաբանությունը run() մեթոդում է: Հիմնական ծրագրում ստեղծվում է շարանը՝ որոշելով Runnable Demo դասից ստացված օբյեկտ: Դա t1 է: Start() մեթոդը կոչվում է t1-ի միջոցով:

Հղում ստորև ներկայացված ծրագրին:

Տարբերությունը Runnable-ի և Thread_Figure 02-ի միջև
Տարբերությունը Runnable-ի և Thread_Figure 02-ի միջև

Նկար 02. Java ծրագիր՝ հանգույց գործարկելու համար շղթա ստեղծելու համար՝ կիրառելով Runnable ինտերֆեյսը

Համաձայն վերոհիշյալ օրինակի՝ Runnable Demo դասը իրականացնում է Runnable ինտերֆեյս։ Թելերի միջոցով գործարկելու տրամաբանությունը գրված է run() մեթոդով: Հիմնական ծրագրում ստեղծվում է շարանը՝ որոշելով Runnable Demo դասից ստացված օբյեկտ:Դա t1 է: Այնուհետև start() մեթոդը կանչվում է՝ օգտագործելով t1:

Ի՞նչ է Թելը:

Թելա ստեղծելու մյուս մեթոդը Thread դասի ընդլայնումն է: Այն բաղկացած է երեք քայլից. Առաջինը՝ դասը հայտարարել որպես Thread դասի ընդլայնող: Այնուհետև պետք է գրվի run() մեթոդը: Այն ունի քայլերի հաջորդականությունը, որը պետք է կատարի շարանը: Ի վերջո, ստեղծվում է thread օբյեկտը, և start() մեթոդը կանչվում է՝ սկսելու thread-ի կատարումը։ Տե՛ս ստորև ներկայացված ծրագիրը։

Տարբերությունը Runnable-ի և Thread_Figure 03-ի միջև
Տարբերությունը Runnable-ի և Thread_Figure 03-ի միջև

Նկար 03. Java ծրագիր, որը ընդլայնում է Thread class

Ըստ վերոնշյալ ծրագրի՝ MyThread դասը ընդլայնում է Thread դասը։ Այն անտեսում է գործարկման մեթոդը: Run() մեթոդը պարունակում է տրամաբանություն, որը պետք է կատարվի շարանի կողմից: Դա թելի մուտքի կետն է:Այնուհետև ստեղծվում է թելի օբյեկտը: Դա շարանը 1 է: Շարանը սկսվում է start() մեթոդով: Այն կիրականացնի կանչ դեպի run() մեթոդ:

Երկու դասերի ծրագրի օրինակ, որը ընդլայնում է Thread դասը, հետևյալն է.

Հիմնական տարբերությունը Runnable-ի և Thread-ի միջև
Հիմնական տարբերությունը Runnable-ի և 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-ի միջև

Խորհուրդ ենք տալիս: