package thread;
import java.util.concurrent.CountDownLatch;
/**
* 子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次
* CountDownLatch实现更方便 所以主子线程问题 第一时间要想到这个解决方案
*/
public class Thread5Test {
private static CountDownLatch countDownLatch = new CountDownLatch(1);
private static class ThreadMain extends Thread {
ThreadChild threadChild = new ThreadChild();
@Override
public void run() {
try {
threadChild.start();
for (int i = 1; i <= 50; i++) {
countDownLatch.await();
for (int j = 0; j < 100; j++) {
System.out.println(j + 1 + "--主线程" + i);
}
countDownLatch = new CountDownLatch(1);
}
} catch (InterruptedException e) {
//do something
}
}
}
private static class ThreadChild extends Thread {
@Override
public void run() {
while (true) {
for (int i = 0; i < 10; i++) {
System.out.println(i + 1 + "--子线程");
}
countDownLatch.countDown();
}
}
}
public static void main(String[] args) {
try {
ThreadMain threadMain = new ThreadMain();
threadMain.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}