栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java限制并发数

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java限制并发数

经测试,1秒内可能出现2倍限制的返回量,望各位大佬指正,本文方案仅供参考

方案1:
    private LoadingCache counter =
            CacheBuilder.newBuilder()
                    .expireAfterWrite(1, TimeUnit.SECONDS)  //1秒内
                    .build(new CacheLoader() {
                        @Override
                        public AtomicLong load(Long seconds) throws Exception {
                            return new AtomicLong(0);
                        }
                    });
    //每秒限制次数
    public static long permit = 2;
    
    public Integer mmm() {
        long currentSeconds = System.currentTimeMillis() / 1000;
        long current = 0;
        try {
            current = counter.get(currentSeconds).incrementAndGet();
        } catch (ExecutionException e) {
            return -1
        }
        if (current > permit) {
            return -2
        }
        //todo 逻辑业务
        return 1;
    }
方案2:
    private static Semaphore semaphore = new Semaphore(2);//限制并发个数

    public Integer mmm() {
        if (!semaphore.tryAcquire()) {
            return new Result(ResultCode.REQUEST_OFTEN);
        }
        try {
            //todo 逻辑业务
            return 1;
        } catch (Exception e) {
            return -1;
        } finally {
            semaphore.release();
        }
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459657.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号