giolekva
giolekva

Reputation: 1178

How to measure Java thread execution time?

I want to measure thread execution time in Java. Now I'm monitoring thread start and end times, but I think it's not so accurate because thread could be suspended during it execution.

Upvotes: 9

Views: 11558

Answers (3)

William Louth
William Louth

Reputation: 207

Use a profiling solutions that supports multiple metrics. We call them (metrics) meters in our product supporting standard ones like CPU time, blocking time, waiting time even custom meters based on key performance indicators. I assume you would also like to see what exactly a thread is doing which in that case you definitely need to consider a product rather than a home grown ad hoc solution.

Upvotes: 0

David Koski
David Koski

Reputation: 975

Java MXBeans can provide per-thread CPU time:

import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;

long nanos = ManagementFactory.getThreadMXBean().getThreadCpuTime(Thread.currentThread().getId());

Upvotes: 20

Aaron Digulla
Aaron Digulla

Reputation: 328566

This is nontrivial. Your best bet is to use a profiler which can accumulate the actual CPU cycles used.

Upvotes: 7

Related Questions