我的目标是在浏览器中显示所有线程及其运行时间。这是我的代码块。
ThreadInfo[] infoThreads = ManagementFactory.getThreadMXBean().dumpAllThreads(true, true);
for (int i = infoThreads.length - 1; i > 0; i--) {
if (infoThreads[i].getThreadName().contains("http")) {
if (infoThreads[i].getThreadState() != State.WAITING && infoThreads[i].getThreadState() != State.TIMED_WAITING) {
}
}
}
答案 0 :(得分:1)
您有两个选择...(现在从我的头开始)
1-在应用程序启动期间存储日期,并将其与获取线程时的实际时间进行比较。比较启动应用程序的时间和当前时间,您就可以运行。但这不是最佳选择。
2-线程类检测。这是我第一次尝试。
在Agent
方法中,使用Instrumentation创建ClassFileTransformer
类,实现transform
,在Thread
方法中检查类的名称并捕获init
类,并修改字节码以存储线程启动的时间。您可以为此使用Javassist。我认为Thread类中的startDate
方法是放置sf::Text consoletxt;
sf::Font font;
if (!font.loadFromFile("Times_New_Roman.ttf"))
std::cout<<"Error loading font Times New Roman"<<std::endl;
consoletxt.setFont(font);
consoletxt.setFillColor(sf::Color(255,255,255,255));
consoletxt.setCharacterSize(14);
consoletxt.setOutlineColor(sf::Color(0,0,0,192));
consoletxt.setOutlineThickness(1);
bool console = true;
变量并将此信息存储在那里的好地方。
有时间的时候,我将准备示例代码。