首页 > 代码库 > Guava手记
Guava手记
Cache
Guava的Cache封装的功能比较全面,但是很多地方和设想的不太一样,最明显的就是RemovalListener,它并不是invalid之后就会被调用,因为在调用Cache的invalid的时候,其实并没有真正从内存中删除,只是标记为删除而已,需要通过调用clear或者手工获取的时候,才会进行删除。所以这就要求你在使用的时候要自己实现线程去定时调用clear,或者在需要的时候调用clear,来进行调用。
之所以Cache内部没有实现物理删除是因为需要添加添加一个线程,这个线程可能会和用户主线程争抢资源,所以线程这个事就交给了外部用户程序去实现。其实Cache更多的应用场景是默默的删除,但是我现在开发的项目,其实是希望能够捕获过期删除这个事件(定时删除过期任务,过期的任务要归档),才会有个纠结。
另外,Cache的get可以指定一个Callable,不存在就加载并放置到内存中,Callable则是加载的逻辑;而getIfPresent则是不存在返回空,比较符合传统的get语意;
Guava手记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。