-
JAVA 线程池 线程池的个数 一个线程池中的线程个数5
问题:
1、一个web系统有多少个线程池个数比较合适?
2、一个线程池中有多少个线程比较合适?
问题来源:
在开发海量数据查询系统时,页面用先加载基本信息,部分信息用AJAX加载完成。当AJAX未成功返回时,页面上局部有未成的图标来提示用户数据正在加载中。假设AJAX要加载id为1,2,3,4,5,6,7,8.9,10十条信息。如果用循环方式加载的话,在web与数据库的IO等待上的时间会比较长。当改成用线程池运行多线程后,时间从12秒缩短到2秒。有了这个经验之后,组员有类似性能问题时(系统中的数据都都是海量),都针对自己的业务创建一个线程池运行多线程。做着做着,我们发现有二十几个类有属于自己的线程池,也就是说一个web系统中时刻都有20几个线程池。每个池的上限线程个数为200。
自己的想法:
1、固定线程个数,如3个线程池。
2、固定每个池的上限线程数,如cpu核数*2
求教解决方案:
请大家提点建议,留点经验。2012年12月12日 23:26
1个答案 按时间排序 按投票排序
-
线程池尽量合适,比如常用的最佳算法是如果CPU是N核,则池大小是N/N+1,线程池线程太多会造成频繁的上下文切换/
更多请参考
http://www.ibm.com/developerworks/cn/java/j-jtp0730/
这里提供了一个计算线程池大小的算法
http://macrochen.iteye.com/blog/1473268
如果有些任务是非阻塞/非等待的 尽量与阻塞的/等待的分开。
当AJAX未成功返回时,页面上局部有未成的图标来提示用户数据正在加载中。假设AJAX要加载id为1,2,3,4,5,6,7,8.9,10十条信息。如果用循环方式加载的话,在web与数据库的IO等待上的时间会比较长。当改成用线程池运行多线程后,时间从12秒缩短到2秒。 这个没太看明白,ajax咋和线程池扯上关系了?2012年12月13日 07:33
相关推荐
通常,人们会提到一个说法,即线程池大小设置为N+1或2N,其中N代表CPU的个数。但是,这个说法实际上是错误的。那么,什么是正确的设置方法呢? 首先,让我们来看一下,为什么那个说法是错误的。如果我们认为线程池...
Java并发库Semaphore可以很轻松完成信号量掌握,Semaphore可以掌握某个资源可被同时访问的个数,通过acquire()猎取一个许可,假如没有就等待,而release()释放一个许可。 例如,在Windows下可以设置共享文件的最大...
然后,作者使用线程池来执行多个线程,每个线程都执行一个 Callable 任务。在 Callable 任务中,作者使用 latch.await() 来等待门栓的释放。只有当 latch.getCount() 为 0 时,所有线程才能继续执行。 ...
在上面的代码中,我们使用了一个Semaphore对象来控制线程的访问。每个线程在访问资源之前需要获取许可,如果没有许可就等待。访问完毕后,释放许可。这样可以确保只有5个线程能够同时访问资源。 3. 输出结果分析 ...
当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。 - **优缺点**:优点在于支持开闭原则,易于扩展,增加新的实现类无需修改原有代码。缺点是每次增加...
31. 二进制数中bit为1的个数的统计方法。 32. Java内存数据的dump方法和垃圾回收的触发方式。 33. 读写分离的实现和MySQL从库同步机制。 34. Zookeeper的事务、节点和故障通知机制。 35. 领导者选举算法。 36. ...
【标签】:“浪潮集团笔试”强调了这是一次与该公司相关的测试,而“Java笔试题目合集”则表明重点在于Java语言的技能测试。这包括但不限于语法、异常处理、类库使用、多线程、IO流、集合框架等方面。 【压缩包子...
单例模式是设计模式中的一种,确保一个类只有一个实例,并提供一个全局访问点。这种模式通常用于资源管理器、日志对象、线程池、对话框等。 **实现方法:** 1. **懒汉式:** 在首次调用时创建实例。 2. **饿汉式:*...
实例014 使当前项目依赖另一个项目 21 1.3 界面设计器 22 实例015 安装界面设计器 22 实例016 设计Windows系统的运行对话框 界面 23 实例017 设计计算器程序界面 26 实例018 设计关于进销存管理系统的界面 27 第2章 ...
当需要对某个资源进行集中控制时,例如线程池、缓存、日志对象等,可以使用单例模式确保系统中此类资源只存在一个实例。 **优点:** - 保证系统内存中该类只存在一个实例,节省内存空间。 - 提供了全局访问点。 **...
- 剑指offer:这是指一系列常见算法问题的解决案例,涵盖了二维数组中的查找、替换空格、从尾到头打印链表、重建二叉树、用两个栈实现队列、旋转数组的最小数字、斐波那契数列、二进制中1的个数、打印1到最大的n...
46. **Java线程池**:ExecutorService接口及其实现如ThreadPoolExecutor,管理线程资源。 47. **MySQL binlog**:用于主从复制和故障恢复。 48-49. **事务实现**、**代理模式**:MySQL通过binlog实现ACID事务,...