/CachedQuery

一段简单的缓存查询结果的代码段

Primary LanguageJavaThe UnlicenseUnlicense

CachedQuery

一段简单的缓存查询结果的代码段。

核心**是把Service层查询数据的逻辑和Controller层获取数据的逻辑分成两个线程,中间用一个缓存对象产生联系。

也就是产生了更新数据线程和获取数据线程这两个线程。

  • 更新数据线程就是不停的根据设定的延迟更新缓存对象。
  • 获取数据线程就是Controller层获取缓存对象的数据并返回。

要解决的问题有:

  • Controller层初次获取数据时阻塞线程,防止返回空数据,涉及到两个线程的交流
  • 保证在设定的更新延迟内不停循环更新缓存对象,不能简单地使用Thread.sleep阻塞,这样会导致数据时效性较差
  • 尝试了一下流式Builder的写法