Nous présenterons le contenu de Thread Pool en détail plus tard; Le contenu de ce chapitre comprend:
Introduction au thread et couvrant
Similitudes et différences entre le thread et le runnable
Exemple de multithreading pour le thread et Runnable
Introduction au thread et couvrant
Runnable est une interface qui ne contient qu'une méthode run (). Sa définition est la suivante:
La copie de code est la suivante:
Interface publique Runnable {
Abstract public void run ();
}
Le rôle de Runnable, implémente le multi-lancement. Nous pouvons définir une classe A pour implémenter l'interface Runnable; puis créer un nouveau thread via un nouveau thread (nouveau A ()) et d'autres méthodes.
Le thread est une classe. Le thread lui-même implémente l'interface runnable. Sa déclaration est la suivante:
Le thread de classe publique implémente Runnable {}
Le rôle du thread est de réaliser le multi-threading.
Similitudes et différences entre le thread et le runnable
La similitude entre le thread et le runnable: les deux sont des «implémentations multi-thread».
Les différences entre le thread et le runnable:
Le thread est une classe et Runnable est une interface; Nous savons que "une classe ne peut avoir qu'une classe parent, mais elle peut implémenter plusieurs interfaces", donc Runnable a une meilleure évolutivité.
De plus, Runnable peut également être utilisé pour le «partage des ressources». Autrement dit, plusieurs threads sont créés sur la base d'un certain objet Runnable, et ils partageront des ressources sur l'objet Runnable.
Généralement, il est recommandé d'implémenter le multi-threading via "Runnable"!
Exemples multithreading pour le thread et Runnable
1. Exemple de fil multithre
Ci-dessous, nous pouvons mieux comprendre le thread et passer à travers des exemples, et dessiner sur un exemple en ligne plus convaincant.
La copie de code est la suivante:
// Code source threadtest.java
classe Mythread étend Thread {
ticket int privé = 10;
public void run () {
pour (int i = 0; i <20; i ++) {
if (this.ticket> 0) {
System.out.println (this.getName () + "Ticket Sell: Ticket" + this.ticket--);
}
}
}
};
classe publique threadtest {
public static void main (String [] args) {
// Démarrer 3 threads T1, T2, T3; chaque fil vend 10 billets!
Mythread t1 = new mythread ();
Mythread t2 = new mythread ();
Mythread t3 = new mythread ();
t1.start ();
t2.start ();
t3.start ();
}
}
Résultats en cours:
La copie de code est la suivante:
Filetage de billetterie: Ticket10
Filet-1 Vente de billets: Ticket10
Fix-2 Vente de billets: Ticket10
Filet-1 Vente de billets: Ticket9
Filetage de billetterie: Ticket9
Filet-1 Vente de billets: Ticket8
Filet-2 Vente de billets: Ticket9
Filet-1 Vente de billets: Ticket7
Filetage de billette-ticket: ticket8
Filet-1 Vente de billets: ticket6
Filet-2 Vente de billets: ticket8
Filet-1 Vente de billets: Ticket5
Filetage-0 Vente de ticket: Ticket7
Billets Thread-1: Ticket4
Fix-2 Vente de billets: ticket7
Filet-1 Vente de billets: Ticket3
Filetage-0 Vente de ticket: Ticket6
Filet-1 Vente de billets: Ticket2
Filet-2 Vente de billets: ticket6
Description des résultats:
(01) Mythread hérite de Thread, qui est un thread personnalisé. Chaque mythread vend 10 billets.
(02) Le thread principal principal crée et démarre 3 threads d'enfants Mythread. Chaque fil d'enfant vend 10 billets.
2. Exemple multithread de runnable
Ensuite, nous modifions le programme ci-dessus. Implémentez une interface via Runnable, implémentant ainsi le multi-threading.
La copie de code est la suivante:
// RunnableTest.java Code source
classe Mythread implémente Runnable {
ticket int privé = 10;
public void run () {
pour (int i = 0; i <20; i ++) {
if (this.ticket> 0) {
System.out.println (thread.currentThread (). GetName () + "Ticket Sell: Ticket" + this.Ticket--);
}
}
}
};
classe publique RunnableTest {
public static void main (String [] args) {
Mythread mt = new mythread ();
// Démarrer 3 threads T1, T2, T3 (ils partagent un objet coulable), et ces 3 threads vendent un total de 10 billets!
Thread t1 = nouveau thread (mt);
Thread t2 = nouveau thread (mt);
Thread t3 = nouveau thread (mt);
t1.start ();
t2.start ();
t3.start ();
}
}
Résultats en cours:
La copie de code est la suivante:
Filetage de billetterie: Ticket10
Filet-2 Vente de billets: ticket8
Filet-1 Vente de billets: Ticket9
Filet-2 Vente de billets: ticket6
Filetage-0 Vente de ticket: Ticket7
Billets Thread-2: Ticket4
Filet-1 Vente de billets: Ticket5
Billets Thread-2: Ticket2
Filetage de billette-ticket: ticket3
Billets Thread-1: Ticket1
Description des résultats:
(01) Contrairement à ce qui précède "Mythread hérite de Thread";
(02) Le thread principal principal crée et démarre 3 threads enfants, et ces 3 threads enfants sont tous créés en fonction de "MT, objet Runnable". Le résultat de l'opération est que ces 3 fils d'enfants ont vendu un total de 10 billets. Cela signifie qu'ils partagent l'interface Mythread.