怎么限制并发处理数?tomcat

   阅读
如何限制并发处理数?tomcat
本帖最后由 miraclestar 于 2014-12-02 18:49:20 编辑

一个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
------解决思路----------------------
楼主你的情况有点想过载保护,可以搜搜 过载保护
------解决思路----------------------
引用:
Quote: 引用:

用线程池比较合理,如果使用static的方式存在多线程问题了


定义的是atom的整型,还有多线程问题?

线程池是不就变成异步的了?



看成了Integer了,呵呵,sorry
你可以按照你的想法来实现以下,然后看是否存在问题,如果有问题再说,没有这样实现着就OK

阅读