//Keine Parameter, join(0) wird standardmäßig aufgerufen
public final void join() throws InterruptedException {
join(0) ;
}
//Übergeben Sie die beiden Zeiten Millis Millisekunden + Nanos Nanosekunden, was bedeutet, warten Sie auf Millis + Nanos und rufen Sie schließlich Methode 3 auf
public final synchronisiert void join(long millis, int nanos)
wirft InterruptedException {
if (millis < 0) {
throw new IllegalArgumentException("timeout value is negative");
}
if (nanos < 0 || nanos > 999999) {
throw new IllegalArgumentException(
"nanosecond timeout value out of range");
}
if (nanos >= 500000 || (nanos != 0 && millis = = 0)) {
millis++;
}
join(millis);
}
//Methode 3: Übergeben Sie die Wartezeit in Millisekunden und rufen Sie die zugrunde liegende Wartezeit (Zeit) des Objekts auf
public final synchronisiert void join(long millis )
wirft InterruptedException {
long base = System.currentTimeMillis();
long now = 0;
if ( millis < 0) {
throw new IllegalArgumentException("timeout value is negative");
}
if (millis == 0) {
while (isAlive()) {
wait(0);//Zeigt ewiges Warten an und weist den Thread an, zu sterben
}
} else {
while ( isAlive()) {
long delay = millis - now;
if (delay <= 0) {
break ;
}
wait(delay);
now = System.currentTimeMillis() - base;
}
}
}
public class ThreadJoin erweitert Thread {
public void run(){
try {
this.sleep(500);
System.out.println("["+new Date()+" ]"+this.getName());
} Catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws 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 wird aufgerufen, nachdem jeder Thread gestartet wurde
}
long endTime=System.currentTimeMillis();
}
}
/*
Ausgabe:
[So 11. Juni 13:40:42 CST 2017]Thread-0
[So 11. Juni 13:40:43 CST 2017]Thread-1
[So 11. Juni 13:40:43 CST 2017]Thread-2
[So, 11. Juni 13:40:44 CST 2017]Thread-3
[So, 11. Juni 13:40:44 CST 2017]Thread-4
Wenn Sie „join()“ auskommentieren
, kann das Ergebnis jedes Mal anders sein
[So Jun 11 13:51:09 CST 2017]Thread-2
[So 11. Juni 13:51:09 CST 2017]Thread-4
[So 11. Juni 13:51:09 CST 2017 ]Thread-1
[So 11. Juni 13:51:09 CST 2017]Thread-3
[So 11. Juni 13:51:09 CST 2017]Thread-0
*/
Erledigen Sie die Dinge nicht voreilig, sondern gehen Sie Schritt für Schritt vor 🎜>
Das obige ist der detaillierte Inhalt vonThread – Einführung in die Methode „join()“.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!