线程间的通信

阅读 164

2022-11-04

package com.ygl;

public class CommunicationRunnable implements Runnable{

private Business business;

public CommunicationRunnable() {


}

public CommunicationRunnable(Business business) {

this.business=business;

}

@Override

public void run() {

for(int i=1;i<=50;i++){

business.sub(i);


}



}


}
//*************************************************
package com.ygl;
public class Business {
private boolean isShouldSub=true;
//主线程、子线程关联的代码归为一类
public synchronized void sub(int i){
while(!isShouldSub){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int j=0;j<10;j++){
System.out.println("sub thread"+i+"========"+j);
}
isShouldSub=false;
this.notify();
}

public synchronized void main(int i){
while(isShouldSub){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int j=0;j<10;j++){
System.out.println("main thread"+i+"========"+j);
}
isShouldSub=true;
this.notify();
}
}//************************************************
package com.ygl;


public class TraditionalThreadCommunication {

public static void main(String[] args) {
Business business=new Business();
CommunicationRunnable communicationRunnable=new CommunicationRunnable(business);
Thread thread=new Thread(communicationRunnable);
thread.start();
for(int i=1;i<=50;i++){
business.main(i);

}
}
}

精彩评论(0)

0 0 举报