ホームページ  >  記事  >  Java  >  スレッド -- join() メソッドの概要

スレッド -- join() メソッドの概要

零下一度
零下一度オリジナル
2017-06-29 14:53:071617ブラウズ

1. Join() メソッド、公式の説明では、このスレッドが終了するのを待ち、現在のスレッドが終了するのを待ちます
ソースコード:

//パラメータなし、デフォルトの呼び出しは join(0) )
public Final void join() throws InterruptedException {
join(0);
}
//ミリミリ秒 + ナノ秒を 2 回渡します。これは、ミリ秒 + ナノ秒待って、最後にメソッドを呼び出します。 3
public Final synchronized void join(long millis, int nanos)
throws InterruptedException {
if (millis < 0) {
throw new IllegalArgumentException("タイムアウト値が負です");
}
if ( nanos < 0 || nanos > 999999) {
throw new IllegalArgumentException(
"ナノ秒のタイムアウト値が範囲外です");
}
if (nanos >= 0 | | (nanos != 0 && millis == 0)) {
millis++;
}
join(millis);
}
//方法 3: 待機時間をミリ秒単位で渡します。そして一番下のオブジェクトを呼び出します wait(time)
publicfinal synchronized void join(long millis)
throws InterruptedException {
longbase = System.currentTimeMillis();
long now = 0;
if (ミリス
throw new IllegalArgumentException("タイムアウト値が負です");
}
if (ミリス == 0) {
while (isAlive()) {
wait(0) ;//永遠に待機することを意味し、スレッドを死ぬように指示します
}
} else {
while (isAlive()) {
長い遅延 = ミリス - 今;
if (遅延
break;
}
wait(delay);
now = System.currentTimeMillis() - Base;
}
}
}
2.アプリケーションなど、複数のスレッドを特定の順序で実行する必要があります
public class ThreadJoin extends 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[] thread = new Thread[length];
for(int i=0 ; i
threads[i] = new ThreadJoin();
threads[i].start();
threads[i].join();//join は各スレッドの後に呼び出されますが開始されました
}
long endTime=System.currentTimeMillis();
}
}
/*
output:
[Sun Jun 11 13:40:42 CST 2017]Thread-0
[ Sun Jun 11 13:40:43 CST 2017]スレッド-1
[Sun Jun 11 13:40:43 CST 2017]スレッド-2
[Sun Jun 11 13:40:44 CST 2017]スレッド-3
[Sun Jun 11 13:40:44 CST 2017] Thread-4
join() をコメントアウトすると結果は毎回異なる可能性があります
[Sun Jun 11 13:51:09 CST 2017]スレッド 2
[Sun Jun 11 13 :51:09 CST 2017]スレッド 4
[Sun Jun 11 13:51:09 CST 2017]スレッド 1
[Sun Jun 11 13:51: 09 CST 2017]スレッド 3
[Sun Jun 11 13:51:09 CST 2017]スレッド 0
*/
大まかな方向性を決めた後は、急いで物事を進めないでください。段階的にやらなければなりません

以上がスレッド -- join() メソッドの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。