今天看见这段代码,人家微微一笑?问我怎么改进?我觉得写的没问题,大家给看看怎么优化??

今天看见这段代码,人家微微一笑?问我怎么改进?我觉得写的没问题,大家给看看怎么优化??

public static void getToken(NCBuilder nb, NCAcctContextBuilder nab, Handler> 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,然后重新获取。


private void test(){
        Token token = tokenMap.get(new TokenUID(nb.getNcUrl(), nab));
        //todo 30000不要写死
        if(Objects.nonNull(token) && token.getExpireTime() - System.currentTimeMillis() >= 30000){
            handler.handle(Future.succeededFuture(token));
            return;
        }
        tokenMap.remove(tokenUID);
        createToken(nb, nab, handler);
    }