学生我作业交完了,代码分享一下!不多说什么了哈
服务器端ThreadServer
ThreadPool.java
package thread;
import java.util.LinkedList;
public class ThreadPool extends ThreadGroup{
private boolean isClosed=false;//线程池是否关闭
private LinkedList<Runnable> workQueue;//表示工作队列
private static int threadPoolID;//表示线程池ID
private int threadID;//表示工作线程ID
public ThreadPool(int poolSize){//poolSize指定线程池中的工作线程数
super("ThreadPool-"+(threadPoolID++));
setDaemon(true);
workQueue=new LinkedList<Runnable>();//创建并启动工作线程
for(int i=0;i<poolSize;i++){
new WorkThread().start();
}
}
/**
*向工作队列中加入一个新任务,由工作线程去执行
* @param task
*/
public synchronized void execute(Runnable task){
if(isClosed){//线程池被关闭则抛出
throw new IllegalStateException();
}
if(task!=null){
workQueue.add(task);
notify();//唤醒正在getTask()方法中等待任务的工作线程
}
}
/**
* 从工作队列中取出一个任务,工作线程会调用此方法
* @return
* @throws InterruptedException
*/
protected synchronized Runnable getTask()throws InterruptedException{
while (workQueue.size()==0) {
if(isClosed)return null;
wait();//如果工作队列中没有任务,就等待任务
}
return workQueue.removeFirst();
}
/*