/**
* 子线程循环10次,主线程执行100次,紧接着子线程执行10次,再执行主线程 如此往复50次。
* 子线程循环的时候主线程不能打扰,相同的是主线程执行循环的时候子线程也不能打扰
* @author
*/
public class ThreadTest2 {
private OptionMainSub oms=new OptionMainSub();
public static void main(String[] args) {
ThreadTest2 tt2 = new ThreadTest2();
tt2.init();
}
public void init() {
new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<50;i++){
oms.Sub(i);
}
}
}).start();
for(int i=0;i<50;i++){
oms.Main(i);
}
}
}
class OptionMainSub {
private boolean bSub = true;
public synchronized void Main(int j) {
if (bSub) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for (int i = 1; i <= 5; i++) {
System.out.println("Main:j="+j +",i="+ i);
}
notifyAll();
bSub = true;
}
public synchronized void Sub(int j){
if(!bSub){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int i=1;i<=10;i++){
System.out.println("Sub:j="+j+",i=:"+i);
}
bSub=false;
notifyAll();
}
}
子线程循环10次,主线程执行100次,紧接着子线程执行10次,再执行主线程 如此往复50次。子线程循环的时候主线程不能打扰,相同的是主线程执行循环的时候子线程也不能打扰
最新推荐文章于 2021-01-24 19:24:25 发布