Mikä on säikeessä ero suorituksen () ja aloituksen () välillä?


Vastaus 1:

Yksi suosituista haastattelukysymyksistä, joita pyydettiin Java-kehittäjälle. Antaa ensin ymmärtää suoritettavan run () -menetelmän. Harkitse koodinpätkän seuraamista.

Lähdekoodi (Car.java)

julkisen luokan auto toteuttaa ajettavan {@Override public void run () {System.out.println ("Run car ..."); }}

Lähdekoodi (Cycle.java)

julkisen luokan sykli {public void run () {System.out.println ("Run cycle ..."); }}

Testata

julkisen luokan testi {julkinen staattinen tyhjä pää (merkkijono [] merkit) {/ * luokan kutsutapa Työkierros * / uusi työkierto (). ajo (); / * Luokan Auton kutsutapa, ei ole väliä luokan työkaluissa. Suoritettavissa * / uusi auto (). Run (); }}

Uuden jakson (). Ajon () ja uuden auton (). Ajon () välillä ei ole eroa, vaikka auto toteuttaa ajettavan. Soitat vain luokan auton menetelmästä.

Suoritettavissa ketjussa

julkisen luokan testi {julkinen staattinen tyhjä pää (merkkijono [] merkit) {ketjulanka = uusi säie (uusi auto ()); / * Se käynnistää uuden Car () Threads and Call -menetelmän lankaympäristössä * / thread.start (); }}

ajotapa Car suoritetaan erillisessä säieympäristössä. thread.start () aloittaa uuden säikeen.

Johtopäätös - Runnable-suoritusmenetelmä suoritetaan normaalina luokan menetelmänä. - Langan aloitusmenetelmä aloittaa uuden ketjun.

Ero ketjun aloituksen () ja suoritettavan ajon () välillä

Vastuuvapauslauseke: JavaQuery on minun blogini.


Vastaus 2:

Periaatteessa kun säie aloittaa suorituksen, se on ensin ajoitettava, jotta se voi odottaa valmiusjonossa, jonka jälkeen CPU-aikataulu noutaa sen suorittamista varten.

Joten perusero on toiminnallisuudessa. Käynnistysmenetelmä ajoittaa säikeen suorittamiseen, jossa säie lisätään valmiusjonossa odottavien prosessien / ketjujen luetteloon.

Heti kun CPU-aikataulu on poiminut säiettä suorittamista varten, JVM etsii suoritusmenetelmää ja suorittaa siinä määritetyn koodin.