我有一堆任务,把这些任务提交到线程池的任务队列中,如果队列满了就先不提交。这时线程池中的线程从任务队列中提取任务并开始执行(假设共有5个固定线程),一个线程执行完任务后继续从任务队列中领取任务并执行,任务队列中少了一个任务,这时我们再向任务队列中提交一个任务
class MyTask implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
//执行业务逻辑
}
}
public class MyThread extends Thread {
long minPrime;
private boolean shouldStopFlag=false;
private long checkIntervalTime;
public MyThread(long checkIntervalTimeIn){
this.checkIntervalTime=checkIntervalTimeIn;
}
public void run() {
while(!shouldStopFlag){
//如果获取不到.线程等待指定的时间间隔后,再去获取执行任务
Runnable nexRunnable=getNextTask();
if(nexRunnable!=null){
nexRunnable.run();
}else{
try {
Thread.sleep(checkIntervalTime);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
private Runnable getNextTask(){
//获取下一个需要至执行的任务,可以队列等数据结合中获取
return new MyTask();
}
}
本来就是被复用的,被线程池管理的,自己不用控制。