Schauen Sie sich zunächst den laufenden Status jeder Stufe des Java -Threads an
Ein Thread ist ein Entität in einem Prozess und die grundlegende Einheit, die von dem System unabhängig voneinander geplant und entsandt wird. Prozess mit anderen Threads, die zum gleichen Prozess gehören. Ein Thread kann einen anderen Thread erstellen und rückgängig machen, und mehrere Threads im selben Vorgang können gleichzeitig ausgeführt werden. Aufgrund der gegenseitigen Einschränkungen zwischen Threads erscheinen Threads während des Betriebs intermittierend.
In Betriebssystemen, die Threads einführen, werden Prozesse normalerweise als Grundeinheit zur Zuordnung von Ressourcen verwendet, und Threads werden als grundlegende Einheit für den unabhängigen Betrieb und die unabhängige Planung verwendet. Da Themen kleiner als Prozesse sind und im Grunde keine Systemressourcen besitzen, ist der Overhead der Planung viel geringer, was den Grad der gleichzeitigen Ausführung zwischen mehreren Programmen im System effizienter verbessern kann, wodurch die Systemressourcenauslastung und den Durchsatz erheblich verbessert wird.
Threads sind ein einzelner sequentieller Steuerungsprozess in einem Programm. Ausführen mehrerer Threads gleichzeitig in einem einzigen Programm, um verschiedene Arbeiten zu erledigen, die als Multithreading bezeichnet werden.
Multithreading wird hauptsächlich zum Speichern der CPU -Zeit und zur Verwendung der Threads verwendet.
Multithreading besteht darin, mehrere Aufgaben gleichzeitig zu erledigen, nicht die betriebliche Effizienz zu verbessern, sondern die Effizienz der Ressourcennutzung zu verbessern, um die Systemeffizienz zu verbessern. Themen werden implementiert, wenn mehrere Aufgaben gleichzeitig ausgeführt werden müssen.
Es gibt zwei Möglichkeiten, Multi-Threading in Java zu implementieren
1. Erben Sie die Thread -Klasse
2. Implementieren Sie die Runnable -Schnittstelle
Was sind die gemeinsamen Punkte dieser beiden Methoden:
Unabhängig davon, welche Methode verwendet wird, müssen Sie den Thread (falls eine Thread -Unterklasse sind, ihn selbst verwenden), um den Thread zu generieren und dann die Start () -Methode aufzurufen.
Die Unterschiede zwischen den beiden Methoden:
1. Ein Nachteil der Erbe -Thread -Klasse ist die einzelne Vererbung, während die Implementierung der Runnable -Schnittstelle ihre Mängel ausmacht, und es können mehrere Vererbung erreicht werden.
2. Wenn Sie die Thread -Klasse erben und ein Runnable -Instanzobjekt generieren, müssen Sie mehrere Runnable -Instanzobjekte generieren und dann mehrere Threads generieren und die Runnable -Schnittstelle implementieren. Diese Klasse und dann diese Instanz. Das Objekt generiert mehrere Threads. Das heißt, die Ressourcenfreigabe wird realisiert
Basierend auf den beiden oben genannten Punkten wird empfohlen, die zweite Methode zu verwenden
Das Folgende ist ein Beispiel zu veranschaulichen
Programm 1:
Paket com.dr.runnable1; // eine Klasse erbt die Thread-Klasse, diese Klasse ist eine Multi-Thread-Klasse. /Wenn Sie Multithreading verwenden, müssen Sie den Körper einer Methode public void run () {// Ausdrucke für (int i = 0; i <10; i ++) {System.out.println (this.name+"--- -> run ,,,, ");}}} öffentliche Klasse Demo1 {public static void main (String args []) {// Die erste Methode Runnable R1 = New MyThread (" Thread A "); Runnable R2 = New Mythread ("Thread B") runnable r3 = neuer MyThread ("Thread C"); ); Methoden // MyThread Mt1 = New MyThread ("Thread A"); // MyThread mt2 = new MyThread ("Thread B"); // MyThread mt3 = new MyThread ("Thread C"); // mt1.start () ; // mt1.start (); // Thread kann nur einmal starten // mt2.Start (); // mt3.start ();Die laufenden Ergebnisse des Programms sind:
Dies erbt die Thread -Klasse, die erste Methode generiert mehrere Runnable -Instanzobjekte und generiert dann Thread, um mehrere Threads zu generieren
Die zweite Methode ist, dass diese Klasse die Thread -Klasse direkt vererbt hat, um mehrere Threads zu generieren.
Programm 2:
Paket com.dr.runnable1; Klasse myThread1 implementiert runnable {private int ticket = 10; out .println ("Ticket ------>"+(this.ticket--)); ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::: thread t1 = neuer Thread (mt); (MT);Programmauslaufergebnisse:
Dieses Programm implementiert Runnable, generiert eine Klasse von Instanzobjekten und generiert dann mehrere Threads.