怎么限制并发处理数?tomcat
阅读
一个servlet,现在限制并发处理100个;超过100的请求就直接返回说已经满员,直到有处理完的;
应该如何限制?
我的想法:
模拟了下,这样可以不?这里限制并发4次;
class A {
public static AtomicInteger conNum = new AtomicInteger(0);
public static void main(String[] agrs) {
for (int i = 0; i < 30; i++) {
if (conNum.get() > 4) {
System.out.println("full");
conNum.decrementAndGet();
} else {
conNum.incrementAndGet();
System.out.println(conNum.get());
// dosomething();
if (new Random().nextInt() > 1) {
conNum.decrementAndGet();
}
System.out.println(conNum.get());
}
}
}
}
------解决思路----------------------
web服务器都有地方配置并发,简单。
自己弄,这样也可。
------解决思路----------------------
web服务器有线程池,用线程池最大线程数限制
------解决思路----------------------
用线程池比较合理,如果使用static的方式存在多线程问题了
------解决思路----------------------
在要限制的Servlet上加一个过滤器就行了,并发的计算与限制都放到过滤器里面即可。
可以参考博客文章:http://blog.csdn.net/zyb134506/article/details/41692893
------解决思路----------------------
楼主你的情况有点想过载保护,可以搜搜 过载保护
------解决思路----------------------
看成了Integer了,呵呵,sorry
你可以按照你的想法来实现以下,然后看是否存在问题,如果有问题再说,没有这样实现着就OK
阅读