TokenBucktStrategy.java 1.04 KB
package com.zhaoonline.coupen.concurrent;

import com.zhaoonline.coupen.concurrent.tokenbucket.TokenBucket;
import com.zhaoonline.coupen.concurrent.tokenbucket.TokenBuckets;

import java.util.concurrent.TimeUnit;

/**
 * Created by ZhaoOnline<br/>
 * User: yangyoupeng<br/>
 * Date: 2016/12/16<br/>
 * Time: 17:49<br/>
 * Description:please descript you class
 */
public class TokenBucktStrategy implements  ConcurrentStrategy {

    TokenBucket bucket = null;
    public TokenBucktStrategy(){
         bucket = TokenBuckets.builder()
                .withCapacity(1000)
                .withFixedIntervalRefillStrategy(400, 1, TimeUnit.SECONDS)
                .build();
    }

    /**
     * 立即返回
     * @return
     */
    @Override
    public boolean proceeding() {
        return  bucket.tryConsume();
    }

    /**
     * @param 令牌桶的timemout等同于从令牌桶里面获取多少个令牌。
     * @return
     */
    @Override
    public boolean proceeding(long timeout) {
        bucket.consume(timeout);
        return true;
    }


}