java多线程之Worker Thread模式

Worker Thread模式(工作没来,就一直等,工作来了就干活)

Worker的意思是工作的人,在worker Thread 模式中,工人线程(worker thread)会逐个取回工作并进行处理,当所有的工作全部完成后,工人线程会等待新的工作来。

 

下面来看看程序实例图:

 

ClientTread 表示发出工作请求的线程的类

Request 表示工作请求的类

Channel 接收工作请求并将工作请求交给工人线程的类

WorkerThread 表示工人线程的类

 

Request类:

name表示发出委托请求的名字

number表示发出请求的编号

execute就是模拟执行请求的动作

public class Request {

private final String name;//委托者

private final int number;//请求的编号

private static final Random random = new Random();

public Request(String name,int number){

this.name = name;

this.number = number;

}

public void execute(){

System.out.println(Thread.currentThread().getName()+" excutes "+this);

try {

Thread.sleep(random.nextInt(1000));

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public String toString(){

return "[Request from "+name+" No."+ number +" ]";

}

}

ClientThread类

创建request的实例,并将实例传给Channel类的putRequest的方法

public class ClientThread extends Thread{

private final Channel channel;

private static final Random random = new Random();

public ClientThread(String name,Channel channel){

super(name);

this.channel = channel;

}

public void run(){

try {

for(int i = 0;true;i++){

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值