logo

Multithreading i Java

Multithreading er en Java-funksjon som tillater samtidig kjøring av to eller flere deler av et program for maksimal utnyttelse av CPU. Hver del av et slikt program kalles en tråd. Så, tråder er lette prosesser i en prosess.

Tråder kan opprettes ved å bruke to mekanismer:



  1. Utvidelse av trådklassen
  2. Implementering av det kjørbare grensesnittet

Trådoppretting ved å utvide trådklassen
Vi lager en klasse som utvider java.lang.Thread klasse. Denne klassen overstyrer run()-metoden som er tilgjengelig i Thread-klassen. En tråd begynner sitt liv innenfor run()-metoden. Vi lager et objekt av vår nye klasse og kaller start()-metoden for å starte kjøringen av en tråd. Start() påkaller run()-metoden på Thread-objektet.

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(); } } }>

fibonacci kode java
>

>

Produksjon

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>

Trådoppretting ved å implementere Runnable Interface
Vi lager en ny klasse som implementerer java.lang.Runnable grensesnitt og overstyre run()-metoden. Deretter instansierer vi et Thread-objekt og kaller start()-metoden på dette objektet.

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(); } } }>

>

>

Produksjon

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>

Trådklasse vs kjørbart grensesnitt

  1. Hvis vi utvider Thread-klassen, kan ikke klassen vår utvide noen annen klasse fordi Java ikke støtter multippel arv. Men hvis vi implementerer Runnable-grensesnittet, kan klassen vår fortsatt utvide andre basisklasser.
  2. Vi kan oppnå grunnleggende funksjonalitet til en tråd ved å utvide Thread-klassen fordi den gir noen innebygde metoder som yield(), interrupt() osv. som ikke er tilgjengelig i Runnable-grensesnittet.
  3. Ved å bruke runnable får du et objekt som kan deles mellom flere tråder.