皓月白熏 2022-09-05 15:30 采纳率: 80.8%
浏览 45
已结题

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

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

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,然后重新获取。

  • 写回答

1条回答 默认 最新

  • 燕少༒江湖 2022-09-05 15:39
    关注
    
    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);
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 已采纳回答 9月6日
  • 创建了问题 9月5日

悬赏问题

  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决