场景,某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);
- }
- }
coming from http://guoba6688-sina-com.iteye.com/blog/719972