增加线程数可以提高应用的处理能力,但线程数过多,CPU频繁切换线程会影响性能。
最好的状态是一直使CPU一直保执忙碌状态,如果主机上有两颗四核CPU,那么至少需要8条线程,才能充分利用CPU,如果线程中有阻塞等待,就需要更多的线程供CPU调度执行,否则CPU闲置,如果线程执行相同的任务,阻塞时间与执行时间相等,那么就需要8*2=16条线程。即(阻塞时间/线程执行时间+1)*cpu核心数。
实际中线程执行的任务类型不同,阻塞时间也不相同,不好计算出线程数。 可以通过不同线程数下做压力测试来确认最佳线程数。
Runtime.getRuntime().availableProcessors() 可以获取可用的CPU核心数。
一项工作任务划分成多个子任务,由多个线程去执行,可以提高处理速度。
子任务的数量应多于线程数,细粒度的。这样执行快(小任务)的线程完成后,可以有待处理任务操作,不至于空等其它长任务线程执行完。
对于需要持续处理的批量工作任务:
可以每一个工作任务为由一条线程执行,如果工作任务中有阻塞等待,可以扩大线程数,提高并行处理能力,即同一时刻可以处理更多的任务。每一个工作任务都由单线程完成,单任务的完成时间不理想。
如果将每一个工作任务拆分成多个子任务,即一个工作任务会占用多条线程,缩短单任务的完成时间,但会减少并行任务处理能力,而且可能需要处理多线程执行结果的合并和保证同一任务的子任务并行或相对并行。
如果任务中有不必立即处理的或可异步的,可以交给其它线程或定时任务处理,当前线程返回,减少任务执行时间。
相关推荐
centos7下使用命令查看系统的cpu个数、cpu核心数、cpu线程数
( Weblogic_Server线程数控制.docx ) ( Weblogic_Server线程数控制.docx )
Nachos设置线程id和限制线程数,thread.h和thread.cc这两个文件是更改后的源码,希望对你有帮助
修改tcpIP线程数修改tcpIP线程数
程序主要功能是:输入进程pid,对该pid进程进行所占物理内存、句柄数、线程数、GDI数等增长情况进行监控,并将数据保存txt文件,便于事后分析,主要应用与开发过程中监控内存泄漏等
WAS性能调优以及对jvm、线程数、ORB大小的配置
Nachos实现id、限制线程数和按优先级调度算法(增改源码) Nachos实现id、限制线程数和按优先级调度算法
linux进程的最大线程数 及最大进程数.zip
C#多线程运行示例,在此基础上可扩展实现多线程运行软件。线程数可以任意设置,提供 Visual Studio 2010 创建的工程源码。拍前请确认电脑上已经安装Microsoft Visual Studio 2010。
一次设置即可永久设置编译线程,加快编译速度,一次设置,永久可用。
python实现线程池并可自动拓展和减小线程数(csdn)————程序
针对WAS6.1,对线程数、jvm,日志以及数据库连接进行性能调优
父进程创建三个子线程,第一个子线程对数组的前半部分进行选择排序,第二个子进程对数组的后半部分进行选择排序,第三个子线程对两个已经排序好的数组部分进行归并排序,最后当所有子线程结束之后,父进程输出排序好...
多线程指定线程数运行线程简单例子
可以使用本软件统计当前计算机可以并行执行最大线程数 统计最大线程数
SP2 线程数补丁
主要介绍了Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能,涉及Python网络请求的创建、发送、响应、处理等相关操作技巧,需要的朋友可以参考下
输入进程的PID,在任务管理器中可以添加PID列即可查看到,然后输入要监控的间隔。启动后即可监控,停止后会在程序目录生成一个日志。
C# winform窗体程序练习-多线程 数字累加练习在文本框中输入一个数字,点击开始累加按钮,程序从1开始累计到该数字的结果。由于累加的过程时间比较耗时,如果直接在主线程中计算,窗口会出现卡死情况(即不能移动),...
多线程网络客户端,可以控制最多线程数和超时重试