Multithreading ir Java līdzeklis, kas ļauj vienlaikus izpildīt divas vai vairākas programmas daļas, lai maksimāli izmantotu centrālo procesoru. Katru šādas programmas daļu sauc par pavedienu. Tātad pavedieni ir viegli procesi procesa ietvaros.
Pavedienus var izveidot, izmantojot divus mehānismus:
- Pavedienu klases paplašināšana
- Palaistās saskarnes ieviešana
Pavedienu izveide, paplašinot pavedienu klasi
Mēs izveidojam klasi, kas paplašina java.lang.Pavediens klasē. Šī klase ignorē klasē Thread pieejamo metodi run(). Pavediens sāk savu dzīvi, izmantojot run() metodi. Mēs izveidojam mūsu jaunās klases objektu un izsaucam start() metodi, lai sāktu pavediena izpildi. Start() izsauc run() metodi Thread objektā.
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(); } } }> |
attēlu izlīdzināšana css
>
>Izvade
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>
Pavedienu izveide, ieviešot Runnable Interface
Mēs izveidojam jaunu klasi, kas ievieš java.lang.Runnable interfeisu un ignorē run() metodi. Pēc tam mēs izveidojam Thread objektu un izsaucam start() metodi šim objektam.
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(); } } }> |
>
>Izvade
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>
Pavedienu klase pret izpildāmo saskarni
- Ja mēs paplašinām Thread klasi, mūsu klase nevar paplašināt nevienu citu klasi, jo Java neatbalsta vairāku mantojumu. Bet, ja mēs ieviešam Runnable saskarni, mūsu klase joprojām var paplašināt citas bāzes klases.
- Mēs varam sasniegt pavediena pamata funkcionalitāti, paplašinot Thread klasi, jo tā nodrošina dažas iebūvētas metodes, piemēram, production(), interrupt() utt., kas nav pieejamas Runnable interfeisā.
- Izmantojot runnable, jūs iegūsit objektu, ko var koplietot starp vairākiem pavedieniem.