今天看见这段代码,人家微微一笑?问我怎么改进?我觉得写的没问题,大家给看看怎么优化??
public static void getToken(NCBuilder nb, NCAcctContextBuilder nab, Handler<AsyncResult<Token>> handler) {
String ncUrl = nb.getNcUrl();
TokenUID tokenUID = new TokenUID(ncUrl, nab);
Token token = tokenMap.get(tokenUID);
if (token == null) {
createToken(nb, nab, handler);
} else {
//给上5秒缓存时间,token的过期时间大于现在5s以上的话,就认为是有效的。
if (token.getExpireTime() - System.currentTimeMillis() >= 30000) {
handler.handle(Future.succeededFuture(token));
} else {
tokenMap.remove(tokenUID);
createToken(nb, nab, handler);
}
}
}
逻辑就是如果token不存在,刚创建时或者token到期失效时为null,创建token,
否则先看token是否过去,因为会对token缓存。如果缓存到期,移除token,然后重新获取。