封装类
package aa; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class TairMethodWrapper { private static Map<String, TairRetryEntry> superdealCache = new ConcurrentHashMap(); public static interface SuperdealTairMethodWrapperInvoke { void invoke(); } class TairRetryEntry { long writeTime; int count; } public void invoke(SuperdealTairMethodWrapperInvoke superdealTairMethodWrapperInvoke, String type, Long repeatInterval, Integer repeatCount) { // TODO Auto-generated method stub if(!isRetry(type, repeatInterval, repeatCount)) { isRetry(type, repeatInterval, repeatCount); } } protected boolean isRetry(String type, Long repeatInterval, Integer repeatCount) { TairRetryEntry entry = superdealCache.get(type); if (entry == null) { entry = new TairRetryEntry(); entry.count = 0; entry.writeTime = System.currentTimeMillis(); superdealCache.put(type, entry); } else if ((System.currentTimeMillis() - entry.writeTime) >= repeatInterval) { entry.count = 0; entry.writeTime = System.currentTimeMillis(); } entry.count++; if (entry.count >= repeatCount) { return true; } //do our method here if success,return true return false; } }
调用方法
import aa.TairMethodWrapper; import aa.TairMethodWrapper.SuperdealTairMethodWrapperInvoke; public class TestRetry1 { public static void main(String[] args) { retry1(); } private static void retry1() { new TairMethodWrapper().invoke(new SuperdealTairMethodWrapperInvoke(){ @Override public void invoke() { // TODO Auto-generated method stub }}, "featuredeal", Long.parseLong("150"), 5); } }