Option_1: уровень кода
В коде вашей бизнес-логики; в начале вызова API start () и в блоке finally вызова stop (). Так что вы получите процессорное время для выполнения вашей логики текущим запущенным потоком. Тогда войдите. Ссылка .
class CPUTimer
{
private long _startTime = 0l;
public void start ()
{
_startTime = getCpuTimeInMillis();
}
public long stop ()
{
long result = (getCpuTimeInMillis() - _startTime);
_startTime = 0l;
return result;
}
public boolean isRunning ()
{
return _startTime != 0l;
}
/** thread CPU time in milliseconds. */
private long getCpuTimeInMillis ()
{
ThreadMXBean bean = ManagementFactory.getThreadMXBean();
return bean.isCurrentThreadCpuTimeSupported() ? bean.getCurrentThreadCpuTime()/1000000: 0L;
}
}
Option_2: мониторинг уровня с помощью плагинов (AIX IBM box, не поддерживающий jvisualvm)
Если вы считаете, что добавление кода задерживается, вы можете предпочесть JConsole с поддержкой плагинов. Я следовал за этой статьей. Загрузите банку topthreads из этой статьи и запустите ./jconsole -pluginpath topthreads-1.1.jar
Option_3: контролировать уровень с помощью TOP (смещение H) + JSTACK (Unix-машина с поддержкой 'Shif + H')
Следуйте этому учебнику , где команда top даст возможность найти верхнюю нить ЦП (nid). Возьмите эту проверку nid в выходном файле jstack.