用观查者模式传递线程状态

场景,某action把任务分配给N个线程,当线程完成后通知action,action返回。 Java代码

 

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);   
    }   
       
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值