代码实现如下:
public class Test {
private static Object lock = new Object();
/**
* 查询计数
*/
public static int queryCnt = 0;
/**
* 最大并发数
*/
public static int MAX_FLOW = 8;
public final void inQuery() {
synchronized (lock) {
queryCnt++;
}
}
public final void outQuery() {
synchronized (lock) {
queryCnt--;
}
}
public final void doQuery() {
try {
this.inQuery();
if (queryCnt > MAX_FLOW) {
//服务忙
return;
}
doExeQuery();
} catch (Throwable t) {
} finally {
this.outQuery();
}
}
public final void doExeQuery() {
}
}