Wir werden den Inhalt des Thread -Pools später im Detail einführen. Der Inhalt dieses Kapitels enthält:
Einführung in Thread und Runnable
Ähnlichkeiten und Unterschiede zwischen Thread und Runnable
Beispiel für Multithreading für Thread und Runnable
Einführung in Thread und Runnable
Runnable ist eine Schnittstelle, die nur eine Run () -Methode enthält. Seine Definition ist wie folgt:
Die Codekopie lautet wie folgt:
öffentliche Schnittstelle Runnable {
öffentliche abstrakte void run ();
}
Die Rolle von Runnable implementiert Multi-Threading. Wir können eine Klasse A definieren, um die Runnable -Schnittstelle zu implementieren.
Thread ist eine Klasse. Thread selbst implementiert die runnable Schnittstelle. Seine Aussage lautet wie folgt:
öffentliche Klasse -Thread implementiert runnable {}
Die Rolle des Threads besteht darin, Multi-Threading zu realisieren.
Ähnlichkeiten und Unterschiede zwischen Thread und Runnable
Die Ähnlichkeit zwischen Thread und Runnable: Beide sind „Multi-Thread-Implementierungen“.
Die Unterschiede zwischen Thread und Runnable:
Thread ist eine Klasse, und Runnable ist eine Schnittstelle. Wir wissen, dass "eine Klasse nur eine übergeordnete Klasse haben kann, aber mehrere Schnittstellen implementieren kann", so dass Runnable eine bessere Skalierbarkeit hat.
Darüber hinaus kann Runnable auch zum "Austausch von Ressourcen" verwendet werden. Das heißt, mehrere Threads werden basierend auf einem bestimmten Runnable -Objekt erstellt, und sie teilen Ressourcen für das Runnable -Objekt.
Im Allgemeinen wird empfohlen, Multi-Threading durch "Runnable" zu implementieren!
Multithreading -Beispiele für Thread und Runnable
1. Multithreading Beispiel für Thread
Im Folgenden können wir den Thread besser verstehen und anhand von Beispielen auf ein Beispiel online ziehen, das überzeugender ist.
Die Codekopie lautet wie folgt:
// ThreadTest.java Quellcode
Klasse MyThread erweitert Thread {
privates Int -Ticket = 10;
public void run () {
für (int i = 0; i <20; i ++) {
if (this.ticket> 0) {
System.out.println (this.getName ()+"Ticketverkäufe: Ticket"+this.ticket-);
}
}
}
};
öffentliche Klasse ThreadTest {
public static void main (String [] args) {
// 3 Threads T1, T2, T3 starten;
MyThread t1 = new MyThread ();
MyThread t2 = new MyThread ();
MyThread t3 = new MyThread ();
t1.start ();
t2.Start ();
t3.Start ();
}
}
Auslaufergebnisse:
Die Codekopie lautet wie folgt:
Thread-0-Ticketverkauf: Ticket10
Thread-1-Ticketverkauf: Ticket10
Thread-2-Ticketverkauf: Ticket10
Thread-1-Ticketverkauf: Ticket9
Thread-0-Ticketverkauf: Ticket9
Thread-1-Ticketverkauf: Ticket8
Thread-2-Ticketverkauf: Ticket9
Thread-1-Ticketverkauf: Ticket7
Thread-0-Ticketverkauf: Ticket8
Thread-1-Ticketverkauf: Ticket6
Thread-2-Ticketverkauf: Ticket8
Thread-1-Ticketverkauf: Ticket5
Thread-0-Ticketverkauf: Ticket7
Thread-1-Tickets: Ticket4
Thread-2-Ticketverkauf: Ticket7
Thread-1-Ticketverkauf: Ticket3
Thread-0-Ticketverkauf: Ticket66
Thread-1-Ticketverkauf: Ticket2
Thread-2-Ticketverkauf: Ticket6
Ergebnisse Beschreibung:
(01) MyThread erbt vom Thread, einem benutzerdefinierten Thread. Jedes MyThread verkauft 10 Tickets.
(02) Das Hauptfaden -Haupthaupt erstellt und startet 3 MyThread Child -Threads. Jeder Kinderfaden verkauft 10 Tickets.
2. Multithread -Beispiel von Runnable
Als nächstes ändern wir das obige Programm. Implementieren Sie eine Schnittstelle über Runnable, wodurch Multi-Threading implementiert wird.
Die Codekopie lautet wie folgt:
// Runnabletest.java Quellcode
Klasse myThread implementiert runnable {
privates Int -Ticket = 10;
public void run () {
für (int i = 0; i <20; i ++) {
if (this.ticket> 0) {
System.out.println (Thread.currentThread (). GetName ()+"Ticketverkäufe: Ticket"+this.ticket--);
}
}
}
};
öffentliche Klasse Runnabletest {
public static void main (String [] args) {
Mythead mt = new MyThread ();
// 3 Threads T1, T2, T3 starten (sie teilen ein runnierbares Objekt), und diese 3 Threads verkaufen insgesamt 10 Tickets!
Thread T1 = neuer Thread (MT);
Thread T2 = neuer Thread (MT);
Thread T3 = neuer Thread (MT);
t1.start ();
t2.Start ();
t3.Start ();
}
}
Auslaufergebnisse:
Die Codekopie lautet wie folgt:
Thread-0-Ticketverkauf: Ticket10
Thread-2-Ticketverkauf: Ticket8
Thread-1-Ticketverkauf: Ticket9
Thread-2-Ticketverkauf: Ticket6
Thread-0-Ticketverkauf: Ticket7
Thread-2 Tickets: Ticket4
Thread-1-Ticketverkauf: Ticket5
Thread-2 Tickets: Ticket2
Thread-0-Ticketverkauf: Ticket3
Thread-1-Tickets: Ticket1
Ergebnisse Beschreibung:
(01) Im Gegensatz zu den oben genannten "MyThread erbt sich aus Thread";
(02) Das Haupt -Thread -Main erstellt und startet 3 untergeordnete Threads, und diese 3 untergeordneten Threads werden basierend auf "MT, Runnable -Objekt" erstellt. Das Ergebnis der Operation ist, dass diese 3 Kinderfäden insgesamt 10 Tickets verkauften. Dies bedeutet, dass sie die MyThread -Schnittstelle teilen.