MBaen+Timer=减少数据库调用

本文介绍了一个Java中使用MBean实现定时任务的具体案例,包括定义接口、实现类及如何通过MBeanServer进行注册与调用的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/inforstack/article/details/54250510

定义所需接口

public interface HomeDataMBean {
	
	public void getDataCount();
	
}

实现接口

public class HomeData implements HomeDataMBean {
	private static ConcurrentHashMap<String, Integer> dataMap = new ConcurrentHashMap<String, Integer>();
	public static ConcurrentHashMap<String, Integer> getDataMap() {
		return dataMap;
	}
	
	@Override
	public void getDataCount() {
		Timer timer = new Timer();
		timer.schedule(new TimerTask() {
			@Override
			public void run() {
				//每隔4小时更新Map中的数据
			}
		}, 1000, 14400000);
	}
}

初始化

try {
	HomeData homeData = new HomeData();
	MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
	ObjectName name = new ObjectName("com.inforstack.clinicalsense.jmx:type=HomeData");
	mbs.registerMBean(homeData, name);
	// ObjectName, 调用getDataCount,,调用方法所需参数,参数类型
	//我写的是无参方法所以传递两个null
	mbs.invoke(name, "getDataCount", null, null);
} catch (Exception e) {
	e.printStackTrace();
}

终端命令

jconsole




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值