场景,某action把任务分配给N个线程,当线程完成后通知action,action返回。
package com.koubei.Observable;
import java.util.Observable;
import java.util.Observer;
public class Action implements Observer{
private int count;
public String execute() throws InterruptedException{
new Thread(new MadeCardThread(10,this)).start();
new Thread(new MadeCardThread(10,this)).start();
new Thread(new MadeCardThread(10,this)).start();
new Thread(new MadeCardThread(10,this)).start();
while(count != 40){
Thread.sleep(1000);
}
System.out.println("========= end =========");
return "success";
}
public void update(Observable o, Object arg) {
// TODO Auto-generated method stub
if(arg instanceof Integer){
count = count + (Integer)arg;
}
}
public static void main(String[] args) throws InterruptedException {
(new Action()).execute();
}
}
class MadeCardThread extends Observable implements Runnable {
private int count;
public MadeCardThread(int count,Observer observer){
this.addObserver(observer);
this.count = count;
}
public void run() {
// TODO Auto-generated method stub
for(int i=0; i<count; i++){
System.out.println(Thread.currentThread().getId() + " : " + i);
}
this.setChanged();
this.notifyObservers(count);
}
}