题目:子线程循环 10 次,接着主线程循环 100,接着又回到子线程循环 10 次,接着再回到主线程又循环 100,如此循环 50
次,请写出程序。
package day0518;
/**
* @author liw
* @date 2020-07-12
*/
public class DemoThreadTest {
private static boolean flag = false;
public static void main(String[] args) {
new Thread(
new Runnable() {
@Override
public void run() {
for (int i = 0; i < 50; i++) {
synchronized (DemoThreadTest.class) {
if (flag) {
try {
DemoThreadTest.class.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for (int j = 0; j < 10; j++) {
System.out.println();
}
flag = true;
DemoThreadTest.class.notify();
}
}
}
}).start();
//主线程循环部分
for (int i = 0; i < 50; i++) {
synchronized (DemoThreadTest.class) {
if (flag) {
try {
DemoThreadTest.class.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//主线程循环一百次循环体,i 两个线程轮流次数,j为主线程单个轮回里轮回次数
for (int j = 0; j < 100; j++) {
System.out.println(Thread.currentThread().getName() + "i=" + i + ",j=" + j);
}
flag =false ;
DemoThreadTest.class.notify();
}
}
}
}