jfinal-weixin 刷新accesstoken 的一点小疑问

我在看源码的时候看到看到会根据返回的结果判断accesstoken是否需要刷新

image.png

image.png

有个疑问:

刷新方法这个synchronized关键字不会起到线程同步的作用,因为每次我看都是用new ApiResult 来调用的



评论区

JFinal

2018-01-13 22:09

如果每次都是 new 出来 Apiresult,那么即便是有 synchronized 关键字也“不能”起到同步的作用

这段代码是很多年前写的,当时的代码应该是可以同步的,后来由于不断改动就有问题

正确的作法是在这个方法上再添加一个 static 关键字,那么,即便你是每次 new 出来 ApiResult 都会被同步,感谢你的反馈

JFinal

2018-01-13 22:16

虽然这里有点问题,但影响并不大,即便是出现并发问题,也就是浪费点 access token api 的调用定额而已,而一个 access token 可以使用 7200 秒,绝大多数情况是够用的

JFinal

2018-01-13 22:21

此外,jfinal weixin 还有一个在 7200 秒之前提前 5 秒重新刷新 access token 的机制,所以通常情况下,在 access token 过期之前就被更新了,所以不会出现大并发时多线程同时更新 access token 的情况

快乐的蹦豆子

2018-01-14 10:59

嗯,谢谢波总,不是什么大问题

JFinal

2018-01-14 11:51

@快乐的蹦豆子 已经在 gitee.com 的 issue 中补充了改进建议,后续版本完善一下,再次感谢

热门反馈

扫码入社