package com.codahale.metrics.health.jvm;
import com.codahale.metrics.health.HealthCheck;
import com.codahale.metrics.jvm.ThreadDeadlockDetector;
import java.util.Set;
A health check which returns healthy if no threads are deadlocked.
/**
* A health check which returns healthy if no threads are deadlocked.
*/
public class ThreadDeadlockHealthCheck extends HealthCheck {
private final ThreadDeadlockDetector detector;
Creates a new health check.
/**
* Creates a new health check.
*/
public ThreadDeadlockHealthCheck() {
this(new ThreadDeadlockDetector());
}
Creates a new health check with the given detector.
Params: - detector – a thread deadlock detector
/**
* Creates a new health check with the given detector.
*
* @param detector a thread deadlock detector
*/
public ThreadDeadlockHealthCheck(ThreadDeadlockDetector detector) {
this.detector = detector;
}
@Override
protected Result check() throws Exception {
final Set<String> threads = detector.getDeadlockedThreads();
if (threads.isEmpty()) {
return Result.healthy();
}
return Result.unhealthy(threads.toString());
}
}