Peamine erinevus – käivitatav vs lõim
Käites olevat programmi tuntakse protsessina. Protsessi saab jagada mitmeks alamprotsessiks. Näiteks Microsoft Word on protsess. Samal ajal kontrollib see õigekirja- ja grammatikavigu. See on alamprotsess. Neid alamprotsesse nimetatakse lõimedeks. Mitme lõimega töötlemine on mitme lõime samaaegse käivitamise protsess. Keermestatud rakendusi saab luua erinevate programmeerimiskeelte abil. Runnable ja Thread on seotud Java programmeerimisega. Javas on lõime loomiseks kaks meetodit Runnable liidese rakendamise või lõime klassi laiendamise teel. Runnable juurutamisel saavad paljud lõimed jagada sama lõimeobjekti, samas kui klassis Extending Thread on iga lõimega seotud kordumatu objekt. See on peamine erinevus Runnable ja Thread vahel.
Mis on käivitatav?
Lõim läbib mõningaid olekuid. "Uus" on niidi elutsükli algus. Pärast seda, kui meetod start() kutsub uut lõime, muutub see käivitatavaks. Kui lõime ajakava valib lõime, läheb see tööolekusse. Lõim ootab olekut, kui see lõim ootab ülesande täitmiseks teist lõime. Kui lõim on töö lõpetanud, läheb see lõpetamisolekusse.
Lõime saab rakendada Runnable liidese abil. Vaadake allolevat programmi.
Joonis 01: Java programm lõime loomiseks käivitatava liidese abil
Vastav alt ül altoodud programmile rakendab Runnable Demo klass Runnable liidest. Meetod run () on klassi sees, mis rakendab Runnable liidest. See on lõime sisenemispunkt. Loogika on meetodis run(). Põhiprogrammis luuakse lõim, määratledes objekti, mis instantseeriti Runnable Demo klassist. See on t1. Meetodi start() kutsumiseks kasutatakse t1.
Vaadake allolevat programmi.
Joonis 02: Java programm tsükli käivitamiseks lõime loomiseks, rakendades käivitatava liidese
Vastav alt ül altoodud näitele rakendab Runnable Demo klass Runnable liidest. Lõime abil käivitatav loogika on kirjutatud meetodis run(). Põhiprogrammis luuakse lõim, määratledes objekti, mis instantseeriti Runnable Demo klassist. See on t1. Seejärel kutsutakse meetod start() välja, kasutades t1.
Mis on lõim?
Teine lõime loomise meetod on lõime klassi laiendamine. See koosneb kolmest etapist. Esiteks on klass deklareerida Thread klassi laiendajana. Seejärel tuleks kirjutada meetod run(). Sellel on toimingute jada, mille lõim peaks täitma. Lõpuks luuakse lõime objekt ja lõime käivitamiseks kutsutakse meetod start(). Vaadake allolevat programmi.
Joonis 03: Java programm, mis laiendab lõime klassi
Vastav alt ül altoodud programmile laiendab MyThread klass Thread klassi. See tühistab käitamismeetodi. Meetod run() sisaldab lõime poolt täidetavat loogikat. See on lõime sisenemispunkt. Seejärel luuakse niidiobjekt. See on thread1. Lõim käivitatakse meetodi start() abil. See käivitab meetodi run() kutse.
Kahe klassi näide, mis laiendab lõime klassi, on järgmine.
Joonis 04: Java programm kahe klassiga, mis laiendavad lõime klassi
Vastav alt ül altoodud programmile laiendavad nii klass A kui ka B lõimeklassi. Mõlemal klassil on meetodi run() rakendamine. Peamine lõim on see, mis käivitab meetodi main(). Enne peamise lõime suremist loob ja käivitab see lõime 1 ja lõime 2. Selleks ajaks, kui põhilõng jõudis põhimeetodi lõpuni, jookseb paralleelselt kolm lõime. Ei ole kindlat järjekorda, milles niidid väljundit annavad. Kui lõime on käivitatud, on raske otsustada, millist järjekorda nad täidavad. Nad töötavad iseseisv alt.
Millised on käivitatava ja lõime sarnasused?
Mõlemad kasutavad Javas lõime loomiseks
Mis vahe on käivitataval ja lõimel?
Käitatav vs lõim |
|
Runnable on Java liides lõime loomiseks, mis võimaldab paljudel lõimedel jagada sama lõimeobjekti. | Lõim on Java klass lõime loomiseks, kus iga lõimega on seotud ainulaadne objekt. |
Mälu | |
Käivitatavas jagavad mitu lõime sama objekti, seega vajavad vähem mälu. | Klassis Thread loob iga lõim unikaalse objekti, mistõttu on vaja rohkem mälu. |
Võime laiendamine | |
Pärast Runnable liidese rakendamist saab see klassi laiendada. | Java ei toetata mitut pärandit. Pärast lõime klassi laiendamist ei saa see laiendada ühtegi teist klassi. |
Koodi hooldatavus | |
Käitatav liides muudab koodi hooldatavamaks. | Triimi klassis on hooldamine aeganõudev. |
Kokkuvõte – käivitatav vs lõim
Protsess on jagatud mitmeks alamprotsessiks, et täita korraga mitut ülesannet. Neid alamprotsesse nimetatakse lõimedeks. Lõime saab luua Runnable liidese juurutamise või lõime klassi laiendamise kaudu. Thread klassi on lihtne laiendada, kuid see pole parem objektorienteeritud programmeerimise tava. Runnable juurutamisel saavad paljud lõimed jagada sama lõimeobjekti, samas kui laiendatavas Thread klassis on iga lõimega seotud ainulaadne objekt. See on Runnable ja Threadi erinevus. Thread klassis võib mitme objekti loomine kulutada rohkem mälu.
Laadige alla PDF-fail Runnable vs Thread
Saate alla laadida selle artikli PDF-versiooni ja kasutada seda võrguühenduseta kasutamiseks vastav alt tsitaadi märkusele. Laadige PDF-versioon alla siit. Erinevus käivitatava ja lõime vahel