具有多线程的正常多线程和执行器之间的统计差异

时间:2012-03-15 11:22:49

标签: java multithreading threadpool executorservice statistics

有人可以建议我怎样才能显示正常

之间的统计差异

具有多线程的多线程和执行程序,例如CPU时间,总线程

用户时间,内存使用情况,&等等

任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:4)

我不确定我是否理解“统计差异”一词。我相信你问的是使用执行程序和普通线程API,它们之间有什么区别。

首先,执行者基于线程;它只是它们之上的另一层。没有魔法。纯线程API允许您创建和管理多线程应用程序,但需要处理线程同步,池化,在线程之间传输数据等的细节。

Executors框架解决了其中一些问题。您可以定义线程池策略,根据需要选择队列类型,只需将新任务放入传入队列即可。线程池将根据其配置执行任务。

答案 1 :(得分:1)

问题在于你的问题是什么问题没什么意义。

在你有意义地谈论事物之间的“统计差异”之前,你必须有一些方法来量化和衡量它们。在此之前,您可以清楚地说明您要量化/衡量的内容。

您要求的不满足这些标准。


假设你有一个有意义的问题......

在实际层面上,人们尝试量化此类效果(使用线程池与创建新线程)的正常方式是开发一个基准应用程序,其中包含与这两种策略相对应的变体。然后测量相对性能。但这有很多问题。

您实际测量的最基本问题是该基准的两种策略的效果,以及该基准。从基准到其他应用的推广非常困难。问题在于任何基准测试的设计中都嵌入了“隐藏参数”。例如,处理器的数量,线程的数量,任务的长度和复杂性等等。如果没有关于参数的良好直觉,很难设计基准来将它们考虑在内。即使您成功找出隐藏的参数是什么并量化它们的影响,您也会遇到这样的问题:您无法弄清楚这些参数在真实(更复杂)的应用程序中会是什么。在一天结束时,你最终会得到一个模型,无法为你提供实际问题的定量答案。 (计算与牛顿的引力定律完全不同。)