netty实现动态定时器

最近开发一个后台游戏服务器,需要定时给 客户端推送 作物状态:

1.需要开启一个线程,执行定时任务

2.需要动态添加定时任务

3.需要动态修改定时任务时间。

网上找到两种方式:quartz服务 和HashedWheelTimer 这两种方式 ,项目中用的是HashedWheelTimer ,相关API可以自行百度或者看源码。

创建HashedWheelTimer  对象

通过 map<String,TimerOut> 来存储 定时器

通过设置定时任务返回timeOut  对象,存放在map中,当使用减少时间的道具时,修改定时任务时间

编写定时器方法

在 因为用的是netty 在断开连接的时候 一定要存储。

原文地址:https://www.cnblogs.com/mfser/p/9888946.html

时间: 2024-10-15 05:35:26

netty实现动态定时器的相关文章

quartz+spring 实现多任务动态定时器问题

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <beans xmlns="http://www.springframework.org/schema/beans"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"   

SSM的quartz动态定时器

Controller层: package com.smartteam.controller; import com.smartteam.controller.BaseController; import com.smartteam.service.SampleTryEntryService; /** * <p> * 前端控制器 * </p> * * @author XiaoDeng * @since 2019-08-06 */ @Api(tags = "动态定时器&quo

Spring整合Quartz实现动态定时器

一 : 首先了解spring定时器所使用到的场景 比如 : 定时统计报表,或者登录账户密码验证失败冻结账户后,每晚12点将账户解锁等等... 使用jar包 : 2.0使用方法不同 <!-- 定时器 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>1.8.6</versio

llinux 定时器 转载自 http://blog.chinaunix.net/uid-11848011-id-96374.html

这篇文章主要记录我在试图解决如何尽可能精确地在某个特定的时间间隔执行某项具体任务时的思路历程,并在后期对相关的API进行的归纳和总结,以备参考. 问题引出 很多时候,我们会有类似“每隔多长时间执行某项任务”的需求,乍看这个问题并不难解决,实则并不容易,有很多隐含条件需要考虑,诸如:时间精度是多少?时间是否允许出现偏差,允许的偏差是多少,偏差之后如何处理?系统的负载如何?这个程序允许占用的系统资源是否有限制?这个程序运行的硬件平台如何? 为了便于分析,我们锁定题目为“每隔2妙打印当前的系统时间(距

定时器和时间管理

一.jiffies 自系统启动以来产生的节拍的总数. extern unsigned long volatile jiffies; extern u64 jiffies_64; 比较时间的几个宏: time_after(unknown, known) //unknown after known ? true : false; time_before(unknown, known) //unknown before known ? true : false; time_after_eq(unkno

linux 内核定时器详解

原文摘自:http://www.linux-cn.com/html/linux/kernel/20070412/1886.shtml Linux内核2.4版中去掉了老版本内核中的静态定时器机制,而只留下动态定时器.相应地在timer_bh()函数中也不再通过run_old_timers()函数来运行老式的静态定时器.动态定时器与静态定时器这二个概念是相对于Linux内核定时器机制的可扩展功能而言的,动态定时器是指内核的定时器队列是可以动态变化的,然而就定时器本身而言,二者并无本质的区别.考虑到静

《Linux内核设计与实现》读书笔记(十一)- 定时器和时间管理

系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务,推迟一段时间执行的任务),因此,时间的管理对于linux来说非常重要. 主要内容: 系统时间 定时器 定时器相关概念 定时器执行流程 实现程序延迟的方法 定时器和延迟的例子 1. 系统时间 系统中管理的时间有2种:实际时间和定时器. 1.1  实际时间 实际时间就是现实中钟表上显示的时间,其实内核中并不常用这个时间,主要是用户空间的程序有时需要获取当前时间, 所以内核中也管理着这个时间. 实际时间的获取是在开机后,内核初始化时

Linux内核——定时器和时间管理

定时器和时间管理 系统定时器是一种可编程硬件芯片.它能以固定频率产生中断.该中断就是所谓的定时器中断.它所相应的中断处理程序负责更新系统时间,还负责执行须要周期性执行的任务. 系统定时器和时钟中断处理程序是Linux系统内核管理机制中的中枢. 另外一个关注的焦点是动态定时器--一种用来推迟运行程序的工具. 比方说.假设软驱马达在一定时间内都未活动,那么软盘驱动程序会使用动态定时器关闭软驱马达. 内核能够动态创建或销毁动态定时器. 内核中的时间观念 内核在硬件的帮助下计算和管理时间. 硬件为内核提

向下之旅(十四):定时器和时间管理

相对于事件驱动而言,内核中有大量的函数都是基于时间驱动的.有些函数是周期执行的,有些操作是需要等待一个相对的时间后才运行.除了上述两类函数需要内核提供时间外,内核还必须管理系统的运行时间以及当前日期和时间. 其中相对时间和绝对时间是不同的,若某个事件在5秒后被调度执行,那么系统所需要的是——相对时间(相对现在起5秒).如果涉及到日期和时间,内核不但要计算流逝的时间还要计算绝对时间. 周期性产生的事件和推迟执行的时间之间的差别:前者比如每10毫秒一次——都是由系统定时器驱动的.系统定时器是一种可编