SqlTemplate

FutureTask在缓存中使用

好久不见. 提交于 2019-11-28 15:22:54
缓存主要作用是提高应用程序吞吐量和响应性,当然也有负面影响,占用更多内存。在设计 SqlTemplate 也有个简单的本地缓存,sql模板实际只需要解释一次就可以了,以后的调用复用之前解释过。开始的时候是使用简单的HashMap实现的,但是在并发情况下会出现重复解释,下面是第一版的代码片段。 public class Configuration { private ConcurrentHashMap<String, SqlTemplate > templateCache; ...... public SqlTemplate getTemplate(final String content) { if (cacheTemplate) { //是 否则缓存模板 SqlTemplate sqlTemplate = templateCache.get(content); if (sqlTemplate != null){ sqlTemplate = createTemplate(content) ; templateCache.put(content, sqlTemplate) ; } return sqlTemplate; } return createTemplate(content); } //解释构建模板对象 private SqlTemplate createTemplate