当设计具有多个可能以高负载最大化的移动部件的应用程序时,可能希望优先考虑应用程序的某些部分而不是其他部分。此外,了解应用程序的哪个部分是瓶颈或工作最困难,可能有助于确定应用程序对高负载做出反应的最佳效果。
是否有一种通用的方法来确定Java中基于线程的负载?
答案 0 :(得分:1)
是的,如果平台支持,您可以。来自ThreadMXBean
documentation:
Java虚拟机实现可能支持测量当前线程,任何线程或无线程的CPU时间。
以下是一些示例代码:
package test.thread.load;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
public class ThreadLoadTest
{
public static void main(final String[] args)
{
final ThreadMXBean bean = ManagementFactory.getThreadMXBean();
for (final long id : bean.getAllThreadIds())
{
System.out.println(bean.getThreadInfo(id).getThreadName()
+ ": " + bean.getThreadCpuTime(id));
}
}
}
答案 1 :(得分:0)
设计应清楚地识别不同类型的任务/用例。然后根据需要,可以在分离的主线程中执行这些任务。您可以为不同类型的任务使用不同的线程池。然后在系统上运行不同类型的负载测试,以优化线程池的线程数和关联的队列大小。一旦达到系统的最佳数量和所需性能,请继续执行此练习。
希望它有所帮助!