Multithreading yra Java funkcija, leidžianti vienu metu vykdyti dvi ar daugiau programos dalių, kad būtų maksimaliai išnaudotas CPU. Kiekviena tokios programos dalis vadinama gija. Taigi, siūlai yra lengvi procesai procese.
Gijas galima sukurti naudojant du mechanizmus:
- Gijų klasės išplėtimas
- Vykdomos sąsajos diegimas
Gijos kūrimas išplečiant gijų klasę
Sukuriame klasę, kuri praplečia java.lang.Tread klasė. Ši klasė nepaiso metodo run(), kuris yra gijų klasėje. Siūlas pradeda savo gyvenimą naudojant run() metodą. Sukuriame naujos klasės objektą ir iškviečiame start() metodą, kad pradėtume gijos vykdymą. Start() iškviečia run() metodą Thread objekte.
Java
// Java code for thread creation by extending> // the Thread class> class> MultithreadingDemo> extends> Thread {> > public> void> run()> > {> > try> {> > // Displaying the thread that is running> > System.out.println(> > 'Thread '> + Thread.currentThread().getId()> > +> ' is running'> );> > }> > catch> (Exception e) {> > // Throwing an exception> > System.out.println(> 'Exception is caught'> );> > }> > }> }> // Main Class> public> class> Multithread {> > public> static> void> main(String[] args)> > {> > int> n => 8> ;> // Number of threads> > for> (> int> i => 0> ; i MultithreadingDemo object = new MultithreadingDemo(); object.start(); } } }> |
tokia svetainė kaip coomeet
>
>Išvestis
Thread 15 is running Thread 14 is running Thread 16 is running Thread 12 is running Thread 11 is running Thread 13 is running Thread 18 is running Thread 17 is running>
Gijos kūrimas įdiegiant Runnable Interface
Sukuriame naują klasę, kuri įgyvendina java.lang.Runnable sąsają ir nepaiso run() metodo. Tada mes sukuriame Thread objektą ir iškviečiame start() metodą šiame objekte.
Java
// Java code for thread creation by implementing> // the Runnable Interface> class> MultithreadingDemo> implements> Runnable {> > public> void> run()> > {> > try> {> > // Displaying the thread that is running> > System.out.println(> > 'Thread '> + Thread.currentThread().getId()> > +> ' is running'> );> > }> > catch> (Exception e) {> > // Throwing an exception> > System.out.println(> 'Exception is caught'> );> > }> > }> }> // Main Class> class> Multithread {> > public> static> void> main(String[] args)> > {> > int> n => 8> ;> // Number of threads> > for> (> int> i => 0> ; i Thread object = new Thread(new MultithreadingDemo()); object.start(); } } }> |
>
>Išvestis
Thread 13 is running Thread 11 is running Thread 12 is running Thread 15 is running Thread 14 is running Thread 18 is running Thread 17 is running Thread 16 is running>
Gijos klasė vs paleidžiama sąsaja
- Jei pratęsime Thread klasę, mūsų klasė negali išplėsti jokios kitos klasės, nes Java nepalaiko kelių paveldėjimo. Tačiau, jei įdiegsime Runnable sąsają, mūsų klasė vis tiek galės išplėsti kitas bazines klases.
- Galime pasiekti pagrindines gijos funkcionalumą išplėtę gijos klasę, nes joje pateikiami kai kurie integruoti metodai, pvz., production(), interrupt() ir kt., kurių nėra Runnable sąsajoje.
- Naudodami runnable gausite objektą, kurį galėsite bendrinti keliose gijose.