子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序
package com.itcast;
public class TraditionThreadCommuncation {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
final Business business = new Business();
// 主线程
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for (int j = 1; j <= 50; j++) {
business.sub(j);
}
}
}).start();
// 子线程
for (int j = 1; j <= 50; j++) {
business.main(j);
}
}
}
class Business {
private boolean control = true;
public synchronized void sub(int j) {
if(!control){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for (int i = 1; i <= 10; i++) {
System.out.println("sub thread sequece of:" + i + ",loop of" + j);
}
control=false;
this.notify(); //唤醒主线程
}
public synchronized void main(int j) {
if(control){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for (int i = 1; i <= 100; i++) {
System.out.println("main thread sequece of:" + i + ",loop of" + j);
}
control = true;
this.notify(); //唤醒子线程
}
}