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 工具查看的时候 只有一个是在运行的 其他的都是堵塞的、这样就导致了 部分页数的数据无法被执行、熟悉线程池的帮忙看看 是什么问题
...全文
90 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧