模拟情景:有一个工人,他有两个方法,一个是工作,另一个是休息;工作的时候该正常工作不该做休息时的事,休息的时候就该好好的休息无需工作。
以下是实现代码:
public class ThreadCommunication {
/**
* @param args
*/
public static void main(String[] args) {
final Worker worker = new Worker();
new Thread(
new Runnable() {
@Override
public void run() {
for(int j=1;j<=10;j++){
worker.work(j);//在子线程工人工作
}
}
}
).start();
for(int i=1;i<=10;i++){
worker.rest(i);//在主线程工人休息
}
}
}
class Worker {
private boolean iswork = true;
//这段时间在工作
public synchronized void work(int i){
while(!iswork){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int j=1;j<=100;j++){
System.out.println("I should work now!");
}
iswork = false;
this.notify();
}
//这段时间在休息
public synchronized void rest(int i){
while(iswork){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int j=1;j<=10;j++){
System.out.println("I can hava a good rest now! " );
}
iswork = true;
this.notify();
}
}