/**
*
* <pre>
* 子线程运行10次,主线程运行100次,子线程在运行10次,接着主线程在运行100次,依次循环50次
* 线程之间的通信与同步应该在一个业务类中处理
* </pre>
*
* @create 2014年10月22日 下午8:55:17
* @modify
* @since JDK1.6
*/
import java.util.concurrent.atomic.AtomicInteger;
public class TraditionalThreadCommunication {
/**
* @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++){
System.out.println("sub run i"+i);
business.sub(i);
}
}
}
).start();
for(int i=1;i<=50;i++){
System.out.println("i--------"+i);
business.main(i);
}
}
}
class Business {
private boolean bShouldSub = true;
public synchronized void sub(int i){
while(!bShouldSub){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
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) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int j=1;j<=100;j++){
System.out.println("main thread sequence of " + j + ",loop of " + i);
}
bShouldSub = true;
this.notify();
}
}
摘自 04_传智播客_张孝祥_传统线程同步通信技术