¿Cómo puedo hacer verificaciones de salud entre hilos?

Tengo un proceso en el que uno de sus hilos de fondo ( Thread-A) realiza una tarea. Si el proceso se bloquea / cuelga, quiero asegurarme de que el subproceso de fondo también se bloquee (se detiene).

Lo que quiero decir es que no quiero estar en una situación en la que algunos de los subprocesos se bloquean y, por lo tanto, el proceso esencialmente no es funcional y ese subproceso de fondo ( Thread-A) continúa.

Necesito hacer que ese hilo entienda el problema.
¿Hay un patrón para esto? ¿Algún tipo de control de salud puede ser? Aún así, ¿cómo puedo estar seguro de que no tengo el mismo problema con el hilo de verificación de estado?

Quizás estoy confundido sobre esto. ¿Podrías ayudarme por favor?

Respuesta 1
public class HealthChecker
{
    public final long THRESHOLD = 10000L; // 10 seconds

    private final Map <Thread, Long> lastFineReports =
        new ConcurrentHashMap <Thread, Long> ();

    /**
     * Each thread should call this method periodically.
     */
    public void iAmFine ()
    {
        lastFineReports.put (
            Thread.currentThread (), 
            Long.valueOf (System.currentTimeMillis ()));
    }

    /**
     * Used by whatchdog to know whether everything is OK.
     */
    public boolean isEverythingOK ()
    {
        Long [] timestamps = 
            lastFineReports.
                values ().
                    toArray (new Long [lastFineReports.size ()]);

        long now = System.currentTimeMillis ();
        for (Long t: timestamps)
            if (now - t.longValue () > THRESHOLD)
                return false;

        return true;
    }
}
Respuesta: 2

Estoy tratando de grabar la voz 5 segundos después de hacer clic en un botón. ¿Hay alguna forma de hacerlo? Por ejemplo, cuando el usuario registra un botón, comienza a grabar 5 segundos y se detiene. Lo que se grabe debería ser ...

Así que tengo un formulario html en "File1.html" <form action = "MyServlet" method = "post"> MyData: <input type = "text" name = "data"> <br> <input type = "submit" valor = "enviar"> </ ...

Tengo este problema con Java JMS cuando envío una cola a otros sistemas y también planeo acceder a la base de datos para almacenar algunas imágenes. Estoy enfrentando este error con el compilador: ...

Puede probar los objetos afirmarEquals (a, b) y afirmarTrue (a.equals (b)) o afirmarTrue (a == b) (para primitivas). En este caso, por supuesto, afirmaEquals (a, b) es la única variante posible. Es nulo seguro y más ...