package com.gzhs.zsd.thread;
public class Traditional_Synchronized2 {
/**
* @param args
*/
public static void main(String[] args) {
final Business business = new Business();
new Thread(
new Runnable() {
@Override
public void run() {
for(int i = 1; i <= 50; i++){
business.sub(i);
}
}
}
).start();
for(int i = 1; i <= 50; i++){
business.main(i);
}
}
}
//面向对象业务层
class Business {
private boolean bShouldSub = true;
//子线程循环
public synchronized void sub(int i){
while(!bShouldSub){
try {
//等待
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int j=1;j<=10;j++){
System.out.println("sub thread sequence of " + j + ",loop of " + i);
}
bShouldSub = false;
//唤醒
this.notify();
}
//主线程循环
public synchronized void main(int i){
while(bShouldSub){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int j=1;j<=100;j++){
System.out.println("main thread sequence of " + j + ",loop of " + i);
}
bShouldSub = true;
this.notify();
}
}