當設計具有多個移動部件的應用程序時,這些部件可能會在高負載下最大化,因此可能需要優先考慮應用程序的某些部分。此外,瞭解應用程序的哪一部分是瓶頸,還是最難工作,可能有助於確定應用程序對高負載做出反應的最佳方法。在Java中跟蹤線程負載
有沒有一種通用的方法來確定在Java內的線程基礎上的負載?
當設計具有多個移動部件的應用程序時,這些部件可能會在高負載下最大化,因此可能需要優先考慮應用程序的某些部分。此外,瞭解應用程序的哪一部分是瓶頸,還是最難工作,可能有助於確定應用程序對高負載做出反應的最佳方法。在Java中跟蹤線程負載
有沒有一種通用的方法來確定在Java內的線程基礎上的負載?
是的,如果平臺支持,您可以。從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));
}
}
}
設計應明確標識不同類型的任務/用例。然後根據需要,這些任務可以在分離或主線程中執行。您可以爲不同類型的任務創建不同的線程池。然後在系統上運行不同類型的負載測試,以優化線程池的線程數和關聯的隊列大小。一旦達到系統的最佳數量和所需性能,請繼續進行此練習。
希望它有幫助!
這聽起來很像一本教科書的問題。 – mre
在谷歌搜索Java分析器,你會得到很多。 – RGV
mre,這不是教科書問題。我只是選擇不寫在第一人稱。 Rajaganesh,我正在尋找如何在應用程序內部完成它。 – mentics