Multithreading är en Java-funktion som tillåter samtidig körning av två eller flera delar av ett program för maximalt utnyttjande av CPU. Varje del av ett sådant program kallas en tråd. Så trådar är lätta processer inom en process.
Trådar kan skapas genom att använda två mekanismer:
- Förlängning av trådklassen
- Implementera det körbara gränssnittet
Trådskapande genom att utöka klassen Tråd
Vi skapar en klass som utökar java.lang.Tråd klass. Denna klass åsidosätter run()-metoden som är tillgänglig i klassen Thread. En tråd börjar sitt liv i metoden run(). Vi skapar ett objekt av vår nya klass och anropar start()-metoden för att starta exekveringen av en tråd. Start() anropar metoden run() 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(); } } }> |
konvertera ett java-objekt till json
>
>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ådskapande genom att implementera Runnable Interface
Vi skapar en ny klass som implementerar java.lang.Runnable interface och override run()-metoden. Sedan instansierar vi ett Thread-objekt och anropar start()-metoden på detta 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ådklass vs körbart gränssnitt
- Om vi utökar klassen Thread kan vår klass inte utöka någon annan klass eftersom Java inte stöder multipla arv. Men om vi implementerar Runnable-gränssnittet kan vår klass fortfarande utöka andra basklasser.
- Vi kan uppnå grundläggande funktionalitet för en tråd genom att utöka Thread-klassen eftersom den tillhandahåller vissa inbyggda metoder som yield(), interrupt() etc. som inte är tillgängliga i Runnable-gränssnittet.
- Genom att använda runnable får du ett objekt som kan delas mellan flera trådar.