Maison  >  Article  >  Java  >  Thread--Introduction à la méthode join()

Thread--Introduction à la méthode join()

零下一度
零下一度original
2017-06-29 14:53:071617parcourir

1. Méthode Join(), description officielle attend que ce fil meure Attend que le fil actuel meure

Code source :
//Aucun paramètre, join(0) est appelé par défaut
public final void join() lance InterruptedException {
join(0) ;
}
//Passer dans les deux fois millis millisecondes + nanos nanosecondes, ce qui veut dire attendre millis + nanos, et enfin appeler la méthode 3
jointure vide synchronisée finale publique (long millis, int nanos)
lance InterruptedException {
if (millis < 0) {
lancer new IllegalArgumentException("la valeur du délai d'attente est négative");
}
if (nanos < 0 || nanos > 999999) {
throw new IllegalArgumentException(
"valeur de délai d'attente en nanosecondes hors plage");
}
if (nanos >= 500000 || (nanos != 0 && millis = = 0)) {
millis++;
}
rejoindre(millis);
}
//Méthode 3 : Passer le temps d'attente, en millisecondes, et appeler le wait(time) sous-jacent de l'Object
public final synchronisé void join(long millis )
lance InterruptedException {
long base = System.currentTimeMillis();
long now = 0;
if ( millis < 0) {
throw new IllegalArgumentException("la valeur du délai d'attente est négative");
}
if (millis == 0) {
while (isAlive()) {
wait(0);//Indique une attente interminable, ordonnant au fil de mourir
}
} else {
while ( isAlive()) {
long délai = millis - maintenant;
if (délai <= 0) {
pause ;
}
wait(delay);
now = System.currentTimeMillis() - base;
}
}
}
2. Application, par exemple, plusieurs threads doivent être exécutés dans un certain ordre
classe publique ThreadJoin étend le fil {
public void run(){
essayez {
this.sleep(500);
System.out.println("["+new Date()+" ]"+this.getName());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) renvoie une exception {
int length = 5;
Thread[] threads = new Thread[length];
for(int i=0; i
threads[i] = new ThreadJoin();
threads[i].start() ;
threads[i].join();//join est appelé après le démarrage de chaque thread
}
long endTime=System.currentTimeMillis();
}
}
/*
sortie :
[Sun 11 juin 13:40:42 CST 2017]Thread-0
[Dim. 11 juin 13:40:43 CST 2017]Thread-1
[Dim. 11 juin 13:40:43 CST 2017]Thread-2
[Dim. 11 juin 13:40:44 CST 2017]Thread-3
[Dim. 11 juin 13:40:44 CST 2017]Thread-4
Si vous commentez join()
le résultat peut être différent à chaque fois
[Dim. juin 11 13:51:09 CST 2017]Thread-2
[Dim. 11 juin 13:51:09 CST 2017]Thread-4
[Dim. 11 juin 13:51:09 CST 2017] ]Thread-1
[Dim. 11 juin 13:51:09 CST 2017]Thread-3
[Dim. 11 juin 13:51:09 CST 2017]Thread-0
*/
Ne vous précipitez pas dans les choses. Après vous être donné une direction générale, il faut y aller étape par étape
<.>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn