【发布时间】:2010-03-13 21:41:43
【问题描述】:
有什么方法可以检查有多少线程在等待同步方法解锁?
我想知道线程何时调用同步方法:
1) 有多少线程在等待调用该方法?
2) 一旦方法被调用,它需要等待多长时间才能解锁?
解决方案: 我使用堆栈器解决了这个问题答案:
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未同步,在多线程情况下您将无法获得准确的计数。使用AtomicInteger
标签: java multithreading synchronization