¿Hay alguna manera de comprobar cuántos subprocesos están esperando que se desbloquee un método sincronizado?Cómo comprobar cuántos subprocesos están esperando que se desbloquee un método sincronizado
Me gustaría saber cuando el hilo se llama a un método sincronizado:
1) ¿Cuántos hilos ya están esperando para llamar al método?
2) Una vez que se llama al método ¿cuánto tiempo tuvo que esperar para desbloquear el método?
Solución: He resuelto esto utilizando apiladores responden:
public class LockedClass {
public static int count;
public static void measuringClass() throws IOException{
long startTime = System.currentTimeMillis();
count++;
System.out.println("Threads waiting="+count);
lockedMethod(startTime);
count--;
System.out.println("Threads waiting="+count);
}
public static synchronized void lockedMethod(long startTime) throws IOException{
System.out.println("I spent="+(System.currentTimeMillis()-startTime)+" in the queue");
Hashtable<String, String> params = new Hashtable<String, String>();
params.put("param1", "test");
params.put("param2", "12345678");
String sessionId = Common.getSession(Common.executeHttpRequest(params));
}
}
'count' no está sincronizado, no obtendrá un recuento preciso en una situación de múltiples hilos. utilice 'AtomicInteger' – irreputable