diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java index 901a6637b..a0cf9a200 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java @@ -263,6 +263,7 @@ public abstract class BaseWxMpServiceImpl implements WxMpService, RequestH } Lock lock = this.getWxMpConfigStorage().getAccessTokenLock(); + long timeOutMillis = System.currentTimeMillis() + 3000; boolean locked = false; try { do { @@ -270,6 +271,9 @@ public abstract class BaseWxMpServiceImpl implements WxMpService, RequestH if (!forceRefresh && !this.getWxMpConfigStorage().isAccessTokenExpired()) { return this.getWxMpConfigStorage().getAccessToken(); } + if (!locked && System.currentTimeMillis() > timeOutMillis) { + throw new InterruptedException("获取accessToken超时:获取时间超时"); + } } while (!locked); String response;