Multithreading er en Java-funktion, der tillader samtidig udførelse af to eller flere dele af et program for maksimal udnyttelse af CPU. Hver del af et sådant program kaldes en tråd. Så tråde er lette processer i en proces.
Tråde kan oprettes ved at bruge to mekanismer:
- Udvidelse af trådklassen
- Implementering af Runnable Interface
Trådoprettelse ved at udvide trådklassen
Vi opretter en klasse, der udvider java.lang.Tråd klasse. Denne klasse tilsidesætter run()-metoden, der er tilgængelig i Thread-klassen. En tråd begynder sit liv inde i run()-metoden. Vi opretter et objekt af vores nye klasse og kalder start() metode for at starte udførelsen af en tråd. Start() kalder 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(); } } }> |
dvale dialekt
>
>Produktion
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ådoprettelse ved at implementere den Runnable Interface
Vi opretter en ny klasse, som implementerer java.lang.Runnable interface og override run() metode. Derefter instansierer vi et Thread-objekt og kalder start()-metoden på dette objekt.
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(); } } }> |
>
>Produktion
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 Runnable Interface
- Hvis vi udvider Thread-klassen, kan vores klasse ikke udvide nogen anden klasse, fordi Java ikke understøtter multipel nedarvning. Men hvis vi implementerer Runnable-grænsefladen, kan vores klasse stadig udvide andre basisklasser.
- Vi kan opnå grundlæggende funktionalitet af en tråd ved at udvide Thread-klassen, fordi den giver nogle indbyggede metoder som yield(), interrupt() osv., der ikke er tilgængelige i Runnable-grænsefladen.
- Brug af runnable giver dig et objekt, der kan deles mellem flere tråde.