その(要約ポイント)の場合
- たCountDownLatchのカウントダウンラッチ装置、
- 1-N-1のスレッドが行われ、他のマルチスレッドの仕事を待って許可します。
- (複数のExcelを解決シート、及び最終的には完全に解析されたウェイト、シート解決動作を完了するために、すべてのスレッドのメインスレッドが待機を達成するために、最も簡単に参加することです)
- たCountDownLatchラッチ=新しいたCountDownLatch(2); //使用は、ラッチがメインスレッド待ちに押し込まれるカウントダウン; Nノード、スレッドまたはN-ステップのセット
- latch.countDown();
- (1000 TimeUnit.MILLISECONDS)latch.await; //ブロック現在のスレッドのカウンタが0になるまで
- オリジナルリンク:
記事の一覧から学びます
- 言うことALiBaBaJavaCodingGuideLines何か:
簡単なテスト1テスト1
public class Test03_countdownlatch {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("hello ");
}
};
Thread thread1 = new Thread(runnable);
Thread thread2 = new Thread(runnable);
System.out.println("all thread finish");
}
}
2.結果1:スレッドが時間内に終了しなかった、メインスレッドが終わったので、最初の印刷仕上げ
all thread finish
hello
hello
現在のサブスレッドのメインスレッドが待機を強制3.試験2は、サブスレッドの結合方法によって終了されます
public static void main(String[] args) {
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("hello ");
}
};
Thread thread1 = new Thread(runnable);
Thread thread2 = new Thread(runnable);
thread1.start();
thread2.start();
try {
// 迫使主线程通过join方法等待当前的子线程执行完毕
thread1.join();
// 主线程第二次等待
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("all thread finish");
}
テスト結果
hello
hello
all thread finish
テスト3は、ラッチダウンカウントするために使用されます
public static void main(String[] args) {
Runnable runnable = () -> System.out.println("hello ");
Thread thread1 = new Thread(runnable);
Thread thread2 = new Thread(runnable);
// 使用倒计数门闩器 ,迫使主线程进入等待 ;设置N个结点 ,n个线程或者步骤都可以
CountDownLatch latch = new CountDownLatch(2);
thread1.start();
latch.countDown();
thread2.start();
latch.countDown();
try {
// 阻塞当前线程,直到计数器变为0; await(long time);也可以带时间!
latch.await(1000, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("all thread finish");
}
テスト結果
hello
hello
all thread finish