package com.thread;
//两个线程,子线程10次,主线程5次,子线程10次,主线程5次,如此往复50次
//首先实现互斥,然后实现通信
public class TranditionalThreadCommunication {
final Business business = new Business();
public static void main(String[] args) {
new TranditionalThreadCommunication().init();
}
private void init() {
new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<50;i++)
{
business.main();
}
}
}).start();
for(int i=0;i<50;i++)
{
business.sub();
}
}
class Business {
private Boolean isShouldSub = true;
public synchronized void main() {
if (!isShouldSub) {
for (int i = 0; i < 5; i++) {
System.out.println("主线程第" + i + "次");
}
isShouldSub = true;
this.notify();
} else {
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public synchronized void sub() {
if (isShouldSub) {
for (int j = 0; j < 10; j++) {
System.out.println("子线程第" + j + "次");
}
isShouldSub = false;
this.notify();
} else {
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
package com.thread;
//两个线程,子线程10次,主线程5次,子线程10次