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++){