线程池的介绍及简单实现(2)

任务接口是为所有任务提供统一的接口,以便工作线程处理。任务接口主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等。在文章结尾有相关代码的下载。

以上所描述的线程池结构很简单,一些复杂的线程池结构将不再此讨论。

在下载代码中有测试驱动程序(TestThreadPool),我利用这个测试程序的输出数据统计出下列测试结果。测试有两个参数要设置:

线程池中线程数,即线程池尺寸。

要完成的任务数。

分别将一个参数固定,另一个参数变动以考察两个参数所产生的不同结果。所用测试机器分别为普通PC机(Win2000 JDK1.3.1)和SUN服务器(Solaris Unix JDK1.3.1),机器配置在此不便指明。

表1:测试数据及对应结果 线程池尺寸任务数没有应用线程池所用的时间(单位:毫秒,OS:win)应用线程池所用的时间(单位:毫秒,OS:win)没有应用线程池所用的时间(单位:毫秒,OS:Solaris)应用线程池所用的时间(单位:毫秒,OS:Solaris)
1   5000   3896   130   6513   327  
2   5000   3455   151   6221   659  
4   5000   3425   120   5448   433  
8   5000   3475   160   5769   1478  
16   5000   3505   211   5785   1970  
32   5000   3455   251   6403   875  
64   5000   3595   501   5182   1103  
128   5000   3515   881   5154   405  
256   5000   3495   3104   5502   1589  
512   5000   3425   5488   5667   1262  
16   1   20   0   22   3  
16   2   20   20   21   13  
16   4   20   10   27   10  
16   8   20   20   22   24  
16   16   30   20   29   48  
16   32   40   20   46   108  
16   64   60   20   72   199  
16   128   110   20   148   335  
16   256   201   20   252   132  
16   512   411   40   522   382  
16   1024   811   71   1233   610  
16   2048   1552   80   2045   135  
16   4096   2874   250   4828   787  
图1.线程池的尺寸的对服务器程序的性能影响

图1.线程池的尺寸的对服务器程序的性能影响

根据以上统计数据可得出下图:

图2.任务数对服务器程序的冲击

图2.任务数对服务器程序的冲击

数据分析如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0ab157c8acd5b5d033bee457a8c3feb3.html