jdk1.5线程池设计问题、高手进!!!
城市拖拉机 2011-04-15 04:49:44 jdk1.5线程池 ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) 很灵活,但是我在项目中一直应用的不好
由于现在的项目执行频率高、所以请人帮忙构建一个线程池!
项目需求如下:
启动一个通过java从C接口那边取数据(这个线程不停止运行),然后取到的数据分析页数(会有多页),根据页数来创建线程池、然后要求所有的线程都被执行到、如果有堵塞的话抛弃旧的任务 优先执行新的任务!
以下是我现在的代码
exec = new ThreadPoolExecutor(1,30,5,TimeUnit.SECONDS, new SynchronousQueue<Runnable>());
exec.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());//表示拒绝任务,并在调用者的线程中直接执行该任务
if(exec.getCorePoolSize()<pageNum){
exec.setCorePoolSize(pageNum);//动态调整线程池数量
}
for(int i=0; i<pageNum; i++){
exec.execute(new CrownProcessor(gains));
}
在我发帖的时候有12条数据 对应池里有12个线程但是 通过Jprofiler 工具查看的时候 只有一个是在运行的 其他的都是堵塞的、这样就导致了 部分页数的数据无法被执行、熟悉线程池的帮忙看看 是什么问题