Ich habe eine Anfrage erhalten, eine Analyse der laufenden Threads innerhalb einer JVM zu erstellen, um lange laufende Jobs zu überwachen. Gibt es einen Weg, um das Startdatum/-zeit eines Java-Threads zu finden? Ich habe kein Problem damit, die Threads zu bekommen, aber ich kann einfach nicht herausfinden, wie lange der Thread aktiv war oder wann er gestartet wurde. Um die Threads zu erhalten, durchlaufe ich einfach die ThreadGroup.
Beachten Sie, dass ich keine Kontrolle über die tatsächlichen Threads selbst habe, also kann ich keine Zeit oder Eigenschaft einsetzen und die Startzeit selbst protokollieren. Alles, was ich habe, ist der tatsächliche Thread selbst und ich muss die Daten daraus bestimmen. Ich kann zwei Methoden auf dem Thread finden -- "getThreadCpuTime()" und "getThreadUserTime()", aber ich bin mir nicht sicher, ob diese ausreichen, da der Thread anscheinend gelegentlich die sleep() Methode aufruft und ich befürchte, dass die "Schlafzeit" nicht in einer dieser Methoden enthalten wäre.
Gibt es einen Weg, um die Startzeit für einen Thread zu bestimmen? Oder werden eine der beiden Zeitmethoden zurückgeben, wie lange ein Thread aktiv war?