ActService类:
@Service
public class ActService {
。。。
@Autowired
TransactionHelper transactionHelper;
@Transactional(readOnly = true)
public ActVo getActVo(String phoneNo) {
。。。
if(null == phoneNoSet || phoneNoSet.isEmpty()){
ThreadUtil.FIXED_THREAD_POOL.execute(new Runnable() {
@Override
public void run() {
logger.debug("异步进入fillUserGroupCache");
transactionHelper.fillUserGroupCache(userGroupId);
}
});
。。。
}
。。。
}
TransactionHelper类(解决Spring事务自调用问题)
@Component
public class TransactionHelper {
。。。
@Transactional
public void fillUserGroupCache(String userGroupId) {
logger.debug("填充用户组{}的缓存", userGroupId);
if(...){
synchronized(this){
...
}
}
...
}
...
}
日志
2018-03-01 13:37:40,653 [pool-2-thread-2] DEBUG - 异步进入fillUserGroupCache [ActService$1:68]
2018-03-01 13:37:40,654 [pool-2-thread-3] DEBUG - 异步进入fillUserGroupCache [ActService$1:68]
2018-03-01 13:37:40,654 [pool-2-thread-1] DEBUG - 异步进入fillUserGroupCache [ActService$1:68]
2018-03-01 13:37:40,656 [pool-2-thread-5] DEBUG - 异步进入fillUserGroupCache [ActService$1:68]
2018-03-01 13:37:40,656 [pool-2-thread-4] DEBUG - 异步进入fillUserGroupCache [ActService$1:68]
2018-03-01 13:37:50,674 [pool-2-thread-2] DEBUG - 填充用户组1165的缓存 [TransactionHelper:30]
2018-03-01 13:37:50,674 [pool-2-thread-3] DEBUG - 填充用户组1165的缓存 [TransactionHelper:30]
2018-03-01 13:37:50,674 [pool-2-thread-1] DEBUG - 填充用户组1165的缓存 [TransactionHelper:30]
2018-03-01 13:37:50,674 [pool-2-thread-5] DEBUG - 填充用户组1165的缓存 [TransactionHelper:30]
2018-03-01 13:37:50,674 [pool-2-thread-4] DEBUG - 填充用户组1165的缓存 [TransactionHelper:30]
2018-03-01 13:37:50,677 [pool-2-thread-1] DEBUG - 异步进入fillUserGroupCache [ActService$1:68]
2018-03-01 13:37:50,677 [pool-2-thread-4] DEBUG - 异步进入fillUserGroupCache [ActService$1:68]
2018-03-01 13:37:50,677 [pool-2-thread-3] DEBUG - 异步进入fillUserGroupCache [ActService$1:68]
2018-03-01 13:37:50,678 [pool-2-thread-2] DEBUG - 异步进入fillUserGroupCache [ActService$1:68]
2018-03-01 13:37:50,680 [pool-2-thread-1] DEBUG - 填充用户组1165的缓存 [TransactionHelper:30]
2018-03-01 13:37:50,681 [pool-2-thread-3] DEBUG - 填充用户组1165的缓存 [TransactionHelper:30]
2018-03-01 13:37:50,681 [pool-2-thread-4] DEBUG - 填充用户组1165的缓存 [TransactionHelper:30]
2018-03-01 13:37:50,681 [pool-2-thread-2] DEBUG - 填充用户组1165的缓存 [TransactionHelper:30]
发现第一次调用 transactionHelper.fillUserGroupCache(userGroupId), “异步进入fillUserGroupCache“ 和 “填充用户组1165的缓存” 之间差了10秒,为何性能这么差? 没多少请求啊