`
m635674608
  • 浏览: 5063216 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

LocalCache 缓存设置

    博客分类:
  • java
 
阅读更多
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;

/**
 * 本地缓存帮助类
 * 
 * @author ThinkPad
 *
 */
public class LocalCache<K, V> {

	public Cache<K, V> cache = callableCached();

	/**
	 * 定时任务map
	 */
	private ConcurrentHashMap<Object, Timer> timerMap = new ConcurrentHashMap<Object, Timer>();

	public Cache<K, V> callableCached() {
		Cache<K, V> cache = CacheBuilder.newBuilder().build();
		return cache;
	}

	public LocalCache() {
	}

	public LocalCache(Cache<K, V> cache) {
		this.cache = cache;
	}

	/**
	 * 加入定時任務,定时任务只会初始化一次
	 * 
	 * @param ObjectKey
	 * @param timerTask
	 * @param delay
	 * @param period
	 * @return
	 */
	public void addTimerTask(String ObjectKey, TimerTask timerTask, long delay,
			long period) {
		if (ObjectKey == null || timerTask == null) {
			return;
		}

		if (!timerMap.containsKey(ObjectKey)) {
			Timer timer = new Timer();
			Timer timerOld = timerMap.putIfAbsent(ObjectKey, timer);
			if (timerOld == null) {
				timer.schedule(timerTask, delay, period);
			}
		}
		return;
	}

	/**
	 * 关闭定时任务
	 * 
	 * @param ObjectKey
	 */
	public void cancelTimerTask(String ObjectKey) {
		if (ObjectKey == null) {
			return;
		}
		Timer timer = timerMap.get(ObjectKey);
		if (timer != null) {
			timerMap.remove(ObjectKey);
			timer.cancel();
		}
	}

	public static void main(String[] args) throws Exception {
		final LocalCache<String, String> cache = new LocalCache<String, String>();
		
		System.out.println(cache.cache.get("1", new Callable<String>() {
			public String call() throws Exception {
				Thread.sleep(1000);
				return "3";
			}
		}));
		
		 for( int i=0;i<10;i++){
			 final int j = i; 
	        	new Thread(new Runnable() {
					@Override
					public void run() {
						// TODO Auto-generated method stub
						 try {
							 cache.addTimerTask("1", new TimerTask() {
									@Override
									public void run() {
										cache.cache.put("1", j+""+new Random().nextInt(40));
									}
								}, 1, 1000);
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				}).start();;
	        }
		 
		
		
		//cache.cache.put("1", "2");
		while(true){
			System.out.println(cache.cache.get("1", new Callable<String>() {
				@Override
				public String call() throws Exception {
					// TODO Auto-generated method stub
					Thread.sleep(1000);
					return "3";
				}
			}));
			Thread.sleep(1000);
		}
		
		
		
		

	}

}

 

分享到:
评论

相关推荐

    Java LocalCache 本地缓存的实现实例

    Java LocalCache 本地缓存的实现实例 Java LocalCache 本地缓存的实现实例主要介绍了两种LocalCache的实现方法,一种是基于ConcurrentHashMap实现基本本地缓存,另外一种是基于LinkedHashMap实现LRU策略的本地缓存...

    LocalCache 学习小记1

    LocalCache 是一种本地高速缓存机制,它主要用于提升数据获取速度,尤其是在处理大量数据时,可以有效避免频繁访问远程数据库或分布式缓存,如 Redis 中的热键问题。LocalCache 不是分布式的,所以它更适合用于单机...

    仿redis缓存Java版轻量级缓存组件LocalCache

    仿redis缓存Java版轻量级缓存组件LocalCache,基于JVM内存实现数据缓存及过期机制

    Web应用开启了Local cache后,发现应用日志不再更新1

    标题中的“Web应用开启了Local cache后,发现应用日志不再更新1”指出的问题是,在启用Web应用程序的本地缓存功能后,应用程序的日志记录出现了异常,不再持续更新。描述中提到,日志在大约2分钟后中断,这与Local ...

    etCache 是一个基于 Java 的缓存系统封装,提供统一的 API 和注解来简化缓存的使用.rar

    JetCache是一个基于java的缓存系统封装,提供统一的API和注解简化缓存的使用。JetCache提供了比SpringCache更强大的注解,可以原生的支持TTL、两级缓存、分布式自动刷新,提供了Cache接口用于手工缓存操作。当前有四...

    Mybatis源码分析七之Cache缓存.pdf

    在query方法中,可以看到Mybatis会检查当前查询栈(queryStack)的深度,当查询栈为0且MappedStatement对象的flushCache属性设置为true时,会清理本地缓存(localCache)。这通常发生在每次新的SQL语句执行之前,确保...

    电脑知识\让系统快步如飞正确设置Windows缓存

    本文将围绕“电脑知识:让系统快步如飞——正确设置Windows缓存”这一主题进行深入探讨,旨在帮助用户理解如何优化Windows系统的缓存设置,从而提高计算机的整体运行效率。 #### 一、理解缓存(Cache)的作用 缓存...

    浏览器缓存目录设置

    2. **搜索缓存设置项**:在配置页面中搜索`cache4`或`CacheDirectory4`,这两个选项分别对应HTTP缓存和SSL缓存的存储位置。 3. **修改缓存路径**:选中对应的设置项后,可以在其右侧看到当前的缓存目录路径,点击...

    Visual Studio 2017 2019 2022 Local Packages Cache Cleaner

    此可执行文件通过读取`appsettings.json`配置文件来获取清理规则和设置,如默认的缓存路径、清理策略等。`appsettings.json`文件通常用于存储应用程序的配置信息,对于这款清理工具来说,它可能包含了哪些文件或...

    cpu二级缓存设置

    ### CPU二级缓存设置详解 #### 一、CPU缓存基础知识 在深入了解如何开启或配置CPU的二级缓存之前,我们需要先对CPU缓存的基本概念有所了解。 **1.1 一级缓存(L1 Cache)** 一级缓存是位于CPU内部的高速缓存,...

    Chrome 进阶技巧:将缓存路径放到非系统分区并设置大小

    其中,`d:\cache`表示你想要放置缓存的路径,而`104857600`代表缓存的最大大小(单位为字节,此处设置为100MB)。 2. **修改注册表** - 打开注册表编辑器(可通过快捷键`Win+R`,然后输入`regedit`运行)。 - ...

    local-cache:本地缓存

    本地缓存 本地缓存 从 Google Code 项目导入 我不是作者,只是想在 Google Code 关闭时保存脚本 #原始自述文件 在 HTML 5 中,我们得到了 localStorage,这是一种在本地存储名称/值对的快速简便的方法。 但是,与 ...

    hcache缓存cache查看工具

    sudo cp hcache /usr/local/bin/ # 一、查看前10个大文件缓存 hcache -top 10 # 查看指定pid进程号的进程缓存 hcache -pid #可以将结果写入txt然后使用shell统计进程总缓存大小 #取大小 hcache -pid 117466 | ...

    mybatis一级缓存和二级缓存简单示例

    一级缓存是 Session 级别的缓存,也称为本地缓存(Local Cache)。每当我们在一个 SqlSession 中执行了 CRUD 操作,查询的结果会被存储在当前 SqlSession 的一级缓存中。如果下次再请求同样的 SQL,MyBatis 会首先在...

    PHP7-buffer:PHP的高性能local cache扩展(不支持持久化)

    buffer=======Introduction(介绍)采用C写的扩展完全不担心性能问题采用HashMap数据结构和LRU算法支持此扩展采用进程级共享本地缓存(local cache),能友好的预备热冷数据提供类似于php static静态池,伸缩方便参考...

    详解Guava Cache本地缓存在Spring Boot应用中的实践

    但是Guava Cache是一个全内存的本地缓存实现,而且提供了线程安全机制,所以特别适合于代码中已经预料到某些值会被多次调用的场景下。 Guava Cache可以作为Spring Boot应用中的本地缓存,以提高程序的性能。在使用...

    缓存Cache的示例

    在Web应用中,Cache缓存被用于存储经常访问但变化不大的数据,以减少对数据库的直接访问,从而提升整体性能。计算机系统本身就采用了多级缓存结构,例如CPU中的L1、L2和L3缓存,它们分别位于不同层次,为处理器提供...

    Mybatis的缓存1

    在源码层面,一级缓存主要由DefaultSqlSession类中的LocalCache对象实现。当执行SQL时,Executor会检查LocalCache,如果查找到数据,则直接返回;否则,Executor通过Executor接口的query方法执行SQL,然后将结果放入...

    node-localcache:支持 TTL 的 Node.js 本地内存键值数据缓存系统

    LocalStash 是一种快速、简约的内存键/值缓存,支持过期。 本质上,它与 memcached 等其他键/值存储非常相似,不同之处在于 LocalStash 仅将内容保存在当前进程的内存中,而不保存在某些外部服务中。 LocalStash ...

Global site tag (gtag.js) - Google Analytics