Thread: Jede Aufgabe wird als Thread bezeichnet. Der Thread kann nicht unabhängig existieren, er muss Teil des Prozesses sein.
Einzelner Thread: Gemeinsame Java -Anwendungen sind einzelner Thread. Wenn Sie beispielsweise ein HelloWorld -Programm ausführen, wird der JVM -Prozess gestartet, und dann wird die Hauptmethode ausgeführt, um einen Thread zu generieren. Die Hauptmethode wird auch als Hauptfaden bezeichnet.
Multithreading: Ein Programm, das mehr als einen Thread gleichzeitig ausführt, wird als Multithread -Programm bezeichnet. Multithreading kann den Zweck der Programmierer erfüllen, effiziente Programme zu schreiben, um das Ziel zu erreichen, die CPU vollständig zu nutzen.
Beispiel für ein Thread-Code:
öffentliche Klasse SingLethread {public static void main (String [] args) {Thread = Thread.CurrentThread (); // den aktuell ausgeführten Thread -Objekt -Thread.SetName ("Single Thread") abrufen; // benennen Sie den Thread.out.println (thread.getName ()+"running") um; für (int i = 0; i <10; i ++) {System.out.println ("Thread schläft:"+i); try {thread.sleep (1000); // Thread schläft, verzögert um eine Sekunde} catch (InterruptedException e) {// Todo automatisch generiert blocke.printstacktrace (); System.out.println ("Thread-Fehler");}}}}}Beispiel für Multithread -Code:
HINWEIS: Es gibt zwei Möglichkeiten, Multithreading zu implementieren, eine besteht darin, die Thread -Klasse zu erben, und der andere ist die Implementierung der Runnable -Schnittstelle.
Erben von Thread-Klasse zur Implementierung von Multi-Threading
public class testthread {public static void main (String [] args) {thread t1 = new ExtendThread ("t1", 1000); // Erstellen Sie einen Thread mit dem Up-Turn-Objekt und konstruieren Sie den Fadennamen und den Thread Sleep Time Thread = New ExtendThread ("T2", 2000). Thread T3 = New ExtendThread ("T3", 3000); t1.start (); // den Thread starten und die Auslaufmethode t2.Start () aufrufen; t3.Start ();}} Klasse ExtendThread erweitert Thread {// Ernenname des Thread -Threads; int Zeit; public extendThread (String -Name, int Zeit) {// Threadname und Schlafzeit this.name = name; thattime = time;} public void run () {// Schreiben Sie die Run -Methode der Thread -Klasse um, try {sleep (time); // Alle Threads addieren schlaf} catch (interruptedExceptione) {e.printstacktrace (); }}Multithreading zur Implementierung der Runnable -Schnittstelle
öffentliche Klasse Runnablethread {public static void main (String [] args) {runnable r1 = neu implalierbar ("r1", 1000); // Runnable -Schnittstelle muss sich auf die Thread -Klasse verlassen, um Threads Thread T1 = neuer Thread (R1) zu erstellen. // Runnable kann die Start () -Methode nicht aufrufen, da es sich nicht um einen Thread handelt. Daher müssen Sie die Thread -Klasse verwenden, um Threads runnable r2 = neu impraunions ("R2", 2000); Thread T2 = neuer Thread (R2); Runnable R3 = New implumable ("R3", 3000); // Starten Sie den Thread und rufen Sie die Run -Methode auf t2.Start (); t3.Start ();}} Klasse implrunnable Geräte Runnable {// Erben des Runnable -Schnittstellen -String -Name; versuche {thread.sleep (Zeit); //All threads add sleep}catch(InterruptedException e){e.printStackTrace();System.out.println("Thread interrupt exception");}System.out.println("name is: "+name+", thread sleeps: "+time+"ms");}}Hinweis: Die Thread -Klasse ist tatsächlich eine Klasse, die die Runnable -Schnittstelle implementiert.
Vorteile der Implementierung von Runnable -Schnittstellen gegenüber Erben von Threadklassen