public void process(Monitor monitor) { if (enabled && TransactionMonitor.class.isAssignableFrom(monitor.getClass())) { TransactionMonitor transactionMonitor = (TransactionMonitor) monitor; ThreadMXBean tmxbean = ManagementFactory.getThreadMXBean(); long id = Thread.currentThread().getId(); ThreadInfo threadInfo = tmxbean.getThreadInfo(id); transactionMonitor.set("blockedCount", threadInfo.getBlockedCount()-transactionMonitor.getAsLong("startBlockedCount")); transactionMonitor.set("blockedTime", threadInfo.getBlockedTime()-transactionMonitor.getAsLong("startBlockedTime")); transactionMonitor.set("waitedCount", threadInfo.getWaitedCount()-transactionMonitor.getAsLong("startWaitedCount")); transactionMonitor.set("waitedTime", threadInfo.getWaitedTime()-transactionMonitor.getAsLong("startWaitedTime")); } }
if (TransactionMonitor.class.isAssignableFrom(monitor.getClass())) { TransactionMonitor parent = (TransactionMonitor) monitor; long latency = parent.getAsLong(Attribute.LATENCY); if (latency > threshold) { ArrayList list = new ArrayList();