Zwei Möglichkeiten, Threads anzupassen
Passen Sie eine Runnable -Schnittstellen -Implementierungsklasse an und erstellen Sie dann einen Thread, dh eine runnable Schnittstellenklasse an den Thread.
Neuer Thread oder schreiben Sie eine Thread -Unterklasse, um seine Run -Methode zu überschreiben. (Neu ein Thread und Überschreiben der Run -Methode ist tatsächlich eine Möglichkeit zur anonymen inneren Klasse)
Beispielcode
public static void main(String[] args) {new Thread(new Runnable() {@Overridepublic void run() {System.out.println("create thread by passing a runnable target !");}}).start();new Thread(){@Overridepublic void run() {System.out.println("create thread by Override run method !");};}.Start();}Die oben genannten Methoden zum Erstellen von Threads von 1 und 2 sind aufgrund der Code-Schreibmethode mit anonymen Klassenobjekten ausgelegt. Die folgenden Hilfsanweisungen werden nun ergeben:
1. Für den ersten Absatz habe ich direkt in einer anonymen Laufzeit bestanden. Sie können eine Runnable -Instanz anpassen und dann Thread in Form eines neuen Threads (runnable) abrufen.
2. Für den zweiten Absatz können Sie eine Klasse spezifisch definieren, um die Thread -Basisklasse zu erweitern, und dann diese neue Thread -Klasse neu.
3. Erstellen Sie für diese beiden Segmente anonyme Klassenobjekte direkt mit neuem Thread. Sie können einen variablen Thread1 und Thread2 definieren und dann Thread1.Start () Thread2.Start () verwenden, um den Thread zu starten.
Quellcodeanalyse
Was ist der Unterschied zwischen diesen beiden Methoden? Der endgültige Effekt der beiden ist der gleiche. Auf der Quellcode -Ebene ist die Standardauslaufmethode des Threads (wenn er nicht überschrieben ist) die Ausführungsmethode, die das Ziel aufruft (das Ziel ist nicht leer). Ziel ist die Runnable -Schnittstellenklasse, in der wir bestanden haben.
public synchronized void start() {if (threadStatus != 0)throw new IllegalThreadStateException();group.add(this);boolean started = false;try {start0();started = true;} finally {try {if (!started) {group.threadStartFailed(this);}} catch (Throwable ignore) {}}}Der Start des Threads nennt irgendwann native start0, wodurch die JVM -Virtual -Maschine die Auslaufmethode des Threads aufruft.
public void run () {if (target! = null) {target.run ();}}Hier ist das Ziel ein runnierbares Objekt im Thread
privates Runnable -Ziel;
Zusammenfassen
Die Run -Methode zum Umschreiben von Thread ist die Auslaufmethode, die vom Thread beim Starten ausgeführt wird.
Beim Übergeben von Runnable führt der Thread beim Starten die Standardauslaufmethode aus. Die Run -Methode ruft das übergebene Ziel auf und ruft die Auslaufmethode des Ziels auf.
Die Auswirkung von beiden ist derselbe. Hier ist nur, um uns zu helfen, die Unterschiede in den Codedetails zu sehen.
Das obige ist eine umfassende Analyse der vom Editor eingeführten Java -Threads in Java -Threads. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie mehr wissen möchten, achten Sie bitte wulin.com!