logo

Multithreading in Java

Multithreading ist eine Java-Funktion, die die gleichzeitige Ausführung von zwei oder mehr Teilen eines Programms für maximale CPU-Auslastung ermöglicht. Jeder Teil eines solchen Programms wird als Thread bezeichnet. Threads sind also leichte Prozesse innerhalb eines Prozesses.

Threads können mithilfe von zwei Mechanismen erstellt werden:

  1. Erweitern der Thread-Klasse
  2. Implementierung der Runnable-Schnittstelle

Thread-Erstellung durch Erweiterung der Thread-Klasse
Wir erstellen eine Klasse, die das erweitert java.lang.Thread Klasse. Diese Klasse überschreibt die in der Thread-Klasse verfügbare run()-Methode. Ein Thread beginnt sein Leben innerhalb der run()-Methode. Wir erstellen ein Objekt unserer neuen Klasse und rufen die Methode start() auf, um die Ausführung eines Threads zu starten. Start() ruft die run()-Methode für das Thread-Objekt auf.



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

Fakultät in c
>

>

Ausgabe

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>

Thread-Erstellung durch Implementierung des Runnable Interface
Wir erstellen eine neue Klasse, die die java.lang.Runnable-Schnittstelle implementiert und die run()-Methode überschreibt. Dann instanziieren wir ein Thread-Objekt und rufen die start()-Methode für dieses Objekt auf.

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

>

>

Ausgabe

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>

Thread-Klasse vs. ausführbare Schnittstelle

  1. Wenn wir die Thread-Klasse erweitern, kann unsere Klasse keine andere Klasse erweitern, da Java keine Mehrfachvererbung unterstützt. Aber wenn wir die Runnable-Schnittstelle implementieren, kann unsere Klasse immer noch andere Basisklassen erweitern.
  2. Wir können die grundlegende Funktionalität eines Threads erreichen, indem wir die Thread-Klasse erweitern, da sie einige integrierte Methoden wie yield(), interrupt() usw. bereitstellt, die in der Runnable-Schnittstelle nicht verfügbar sind.
  3. Durch die Verwendung von runnable erhalten Sie ein Objekt, das von mehreren Threads gemeinsam genutzt werden kann.