当前位置: 首页>>代码示例>>Java>>正文


Java RAtomicLong.get方法代码示例

本文整理汇总了Java中org.redisson.api.RAtomicLong.get方法的典型用法代码示例。如果您正苦于以下问题:Java RAtomicLong.get方法的具体用法?Java RAtomicLong.get怎么用?Java RAtomicLong.get使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.redisson.api.RAtomicLong的用法示例。


在下文中一共展示了RAtomicLong.get方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: decrementInstanceCount

import org.redisson.api.RAtomicLong; //导入方法依赖的package包/类
@Override
public long decrementInstanceCount(String key) {
  RAtomicLong instanceCount = redissonClient.getAtomicLong(createGlobalKey(key));
  return (instanceCount.get() > 0) ? instanceCount.getAndDecrement() : 0;
}
 
开发者ID:ONSdigital,项目名称:rm-common-service,代码行数:6,代码来源:DistributedInstanceManagerRedissonImpl.java

示例2: getValue

import org.redisson.api.RAtomicLong; //导入方法依赖的package包/类
@Override
public long getValue(String key) {
  RAtomicLong value = setExpiry(key);
  return value.get();
}
 
开发者ID:ONSdigital,项目名称:rm-common-service,代码行数:6,代码来源:DistributedAtomicLongRedissonImpl.java

示例3: decrementAndGet

import org.redisson.api.RAtomicLong; //导入方法依赖的package包/类
@Override
public long decrementAndGet(String key) {
  RAtomicLong value = setExpiry(key);
  return (value.get() > 0) ? value.getAndDecrement() : 0;
}
 
开发者ID:ONSdigital,项目名称:rm-common-service,代码行数:6,代码来源:DistributedAtomicLongRedissonImpl.java

示例4: apply

import org.redisson.api.RAtomicLong; //导入方法依赖的package包/类
@Override
public void apply(RequestTemplate template)
{
    Boolean tryGetCredit = true;

    RedissonClient redisson = _shopifyRedissonManager.getRedissonClient();

    while (tryGetCredit)
    {
        // Lock per shopify store. The lock is distributed, so it will work for multiple threads and applications.
        RLock lock = redisson.getLock(_shopifyRedissonManager.getMyShopifyUrl());

        RAtomicLong isDefaultRemainingCreditsValueSet = redisson.getAtomicLong(_shopifyRedissonManager.getIsDefaultRemainingCreditsValueSetKey());

        RAtomicLong remainingCreditsAtomic = redisson.getAtomicLong(_shopifyRedissonManager.getRemainingCreditsKey());

        if(isDefaultRemainingCreditsValueSet.get() == 0)
        {
            remainingCreditsAtomic.set(_shopifyRedissonManager.getCreditLimit());
            isDefaultRemainingCreditsValueSet.set(1);
        }

        RAtomicLong lastRequestTimeAtomic = redisson.getAtomicLong(_shopifyRedissonManager.getLastRequestTimeKey());
        Long remainingCredits = remainingCreditsAtomic.get();

        if(remainingCredits > 0)
        {
            // These values are set here, because a request can be made while the current request is still in progress.
            // We set the actual values inside the decoder (when the request is complete), but if we don't set them here
            // as well a raised condition can occur.
            remainingCreditsAtomic.set(remainingCredits - 1);
            lastRequestTimeAtomic.set(System.currentTimeMillis());

            tryGetCredit = false;
            lock.unlock();
        }
        else
        {
            // Check if there were enough time since the last request time.
            // If the latest request's remaining calls were 0 and no calls were made after that, the remaining credits
            // will not be updated. This is why the last request time is used as well.
            long availableCalls = (long)Math.floor((System.currentTimeMillis() - lastRequestTimeAtomic.get())/500);

            if(availableCalls > 0)
            {
                remainingCreditsAtomic.set(availableCalls - 1);
                lastRequestTimeAtomic.set(System.currentTimeMillis());

                tryGetCredit = false;
                lock.unlock();
            }
            else
            {
                lock.unlock();

                try
                {
                    Thread.sleep(1000);
                }
                catch (InterruptedException e)
                {
                    System.out.println("Error while waiting for available Shopify call credit. " + e.getMessage());
                }
            }
        }
    }
}
 
开发者ID:SevenSpikes,项目名称:shopify-api-java-wrapper,代码行数:68,代码来源:RequestLimitInterceptor.java


注:本文中的org.redisson.api.RAtomicLong.get方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。