子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,再接着主线程循环100次,如此循环50次,写出程序
1 主线程和子线程共享的那个类
public class Business {
private boolean isSubThread=true;
public synchronized void printMain(int loop){
while(isSubThread){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int i=1;i<=100;i++){
System.out.println("第"+loop+"次大循环 主线程第"+i+"循环" );
}
System.out.println("===================" );
this.notifyAll();
isSubThread=true;
}
public synchronized void printSub(int loop){
while(!isSubThread){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int i=1;i<=10;i++){
System.out.println("第"+loop+"次大循环 子线程第"+i+"循环" );
}
System.out.println("===================" );
this.notifyAll();
isSubThread=false;
}
}
2 主线程
public class MainThread extends Thread {
private Business business;
public MainThread(Business business) {
super();
this.business = business;
}
@Override
public void run() {
for(int i=1;i<=50;i++){
business.printMain(i);
}
}
/**
* @param args
*/
public static void main(String[] args) {
Business business=new Business();
Thread mainThread=new MainThread(business);
Thread subThread=new SubThread(business);
mainThread.start();
subThread.start();
}
}
3 子线程
public class SubThread extends Thread {
private Business business;
public SubThread(Business business) {
super();
this.business = business;
}
@Override
public void run() {
for(int i=1;i<=50;i++){
business.printSub(i);
}
}
}