完成多线程程序所需的时间?

时间:2010-04-07 16:24:19

标签: java multithreading

java进程启动5个线程,每个线程需要5分钟。流程所需的最短和最长时间是多少?如果可以在java线程和OS线程中解释,将会有很大的帮助。

编辑:我想知道如何在操作系统级别调度线程。

5 个答案:

答案 0 :(得分:4)

这取决于您拥有的逻辑处理器核心数量以及已在运行的进程和线程的优先级。如果您拥有至少五个逻辑处理器核心,理论最小值将是5分钟加上启动和控制线程的小开销。如果您只有一个逻辑处理器核心,那么理论最大值将是25分钟加上很小的开销。上述开销通常不超过几毫秒。

然而,如果同时有许多其他正在运行的线程具有比JVM更高的其他进程,则理论上的最大值可能会无法预测(更高)。

  

编辑:我想知道如何在操作系统级别调度线程。

JVM只生成另一个本机线程,并将其分配给与JVM本身关联的进程。

答案 1 :(得分:1)

最短时间,5分钟,假设线程完全并发运行,没有相互依赖关系并且具有可用的专用核心。最长时间,25分钟,假设每个线程必须独占使用某些全局资源,因此不能与任何其他线程并行运行。

答案 2 :(得分:0)

最大的glib(但是现实的答案)是它们可能需要无限的时间才能完成,因为多线程程序通常包含死锁错误。

答案 3 :(得分:0)

这取决于!没有足够的信息来量化这一点。

缺少信息:硬件 - CPU上可以同时运行多少个线程。工作量 - 是否需要5分钟,因为它在5分钟内执行某些操作,或者执行一些通常需要大约5分钟并且使用大量CPU资源的计算。

当你同时运行多个线程时,可能会有锁等待资源,或者线程甚至可能需要轮流执行,虽然它们已经运行了5分钟,但它们可能只有几秒的CPU秒。

5个线程从不euqals 5X输出。它可以接近但永远不会达到5X。

答案 4 :(得分:0)

我不确定您是否正在寻找线程花费的CPU时间。如果是这种情况,您可以测量CPU时间,见下文

ThreadMXBean tb = ManagementFactory.getThreadMXBean()
long startTime= tb.getCurrentThreadCpuTime();

创建线程时调用上面的内容

long endTime= tb.getCurrentThreadCpuTime();

endTime - starTime之间的差异是线程使用的CPU时间