线程池

来源:互联网 发布:淘宝店服装细节模板 编辑:程序博客网 时间:2024/06/05 16:23

把一个任务分解成多个任务,而由于任务太多,不能一次并发执行,需把这些任务进行分批处理,用线程池来处理此问题。

import org.apache.log4j.Logger;public class TaskStartProcessor implements Runnable{    private static Logger logger = Logger.getLogger(TaskStartProcessor.class);    private DataTaskInterface dataTask;    public TaskStartProcessor() {    }    public TaskStartProcessor(DataTaskInterface dataTask) {        this.dataTask = dataTask;    }    @Override    public void run() {        logger.info("正在執行子任務"+dataTask.getId());        dataTask.start();        logger.info("子任務"+dataTask.getId()+"执行完毕");    }}
ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 500, 2000, TimeUnit.MILLISECONDS,                new ArrayBlockingQueue<Runnable>(5));        for(DataTaskInterface dataTask:dataTasks){            TaskStartProcessor taskProcessor = new TaskStartProcessor(dataTask);            executor.execute(taskProcessor);            System.out.println("线程池中线程数目:"+executor.getPoolSize()+",队列中等待执行的任务数目:"+ executor.getQueue().size()+",已执行玩别的任务数目:"+executor.getCompletedTaskCount());        }        executor.shutdown();
0 0