netty定时器HashedWheelTimer
netty中的Timer管理,使用了的Hashed time Wheel的模式,Time Wheel翻译为时间轮,是用于实现定时器timer的经典算法。算法的核心是将时间划分结合,可能在时间准确性上会比一般的Timer差。
我们看看netty的HashedWheelTimer的一个测试的例子,先new一个HashedWheelTimer,然后调用它的newTimeout方法,这个方法的声明是这样的:
/**
* Schedules the specified {@link TimerTask} for one-time execution after
* the specified delay.
*
* @return a handle which is associated with the specified task
*
* @throws IllegalStateException if this timer has been
* {@linkplain #stop() stopped} already
*/
Timeout newTimeout(TimerTask task, long delay, TimeUnit unit);
这个方法需要一个TimerTask对象以知道当时间到时要执行什么逻辑,然后需要delay时间数值和TimeUnit时间的单位,像下面的例子中,我们在timer到期后会打印字符串,第一个任务是5秒后开始执行,第二个10秒后开始执行。
import org.jboss.netty.util.HashedWheelTimer;
import org.jboss.netty.util.Timeout;
import org.jboss.netty.util.Timer;
import org.jboss.netty.util.TimerTask;
import java.util.concurrent.TimeUnit;
/**
* 12-6-6 下午2:46
*
* @author jiaguotian Copyright 2012 Sohu.com Inc. All Rights Reserved.
*/
public class TimeOutTest {
public static void main(String[] argv) {
final Timer timer = new HashedWheelTimer();
timer.newTimeout(new TimerTask() {
public void run(Timeout timeout) throws Exception {
System.out.println("timeout 5");
}
}, 5, TimeUnit.SECONDS);
timer.newTimeout(new TimerTask() {
public void run(Timeout timeout) throws Exception {
System.out.println("timeout 10");
}
}, 10, TimeUnit.SECONDS);
}
}
原文 http://www.tianjiaguo.com/tech/netty定时器hashedwheeltimer/
分享到:
相关推荐
在"ChatNetty"这个例子中,我们将创建一个简单的聊天服务器和客户端。以下是实现的主要步骤: 1. **创建 ChannelHandler**:定义自定义的 ChannelInboundHandler 和 ChannelOutboundHandler,用于处理接收到的数据...
本篇文章将深入探讨Netty的原理,并通过实例帮助你快速入门和提高。 1. **Netty的基本概念** - **NIO(Non-blocking I/O)**:Netty是基于Java NIO构建的,NIO允许单线程处理多个通道,减少了线程创建和销毁的开销...
也就是说,Netty 是一个基于NIO的客户,服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,...
Netty5完整例子,里面包含编码,解码,心跳处理等,代码可用。 例子的内容是:服务端启动,客户端启动,客户端连接服务器后服务器发一个Message的对象给客户端,客户端接受并打印Message里边的内容。编解码的处理为:...
通过 Netty 的官网例子,你可以深入学习这些概念并了解如何在实际项目中运用。官方示例通常覆盖了基础到高级的各种用法,是理解和掌握 Netty4.0 的良好起点。你可以从 netty-4.0 压缩包中的源代码开始,逐步分析和...
在"Netty实现WebSocket例子"中,我们将探讨如何使用Netty来搭建WebSocket服务器,并实现客户端与服务器之间的双向通信。首先,我们需要理解WebSocket的基本概念和工作原理。WebSocket协议是基于TCP的,它通过HTTP的...
通过实践Netty 3.5的入门实例,你可以学习如何设置服务器、建立连接、定义消息处理流程,以及如何优雅地处理异常。这些基础将帮助你理解Netty的工作原理,为后续学习更高级的功能打下坚实基础。在实践中,你可能会...
在现代Web开发中,实时通信已经成为一个不可或缺的功能,Spring、Netty和WebSocket的结合为构建高性能、低延迟的实时应用提供了强大的解决方案。本实例将详细探讨如何利用这三种技术进行集成,实现高效的双向通信。 ...
- Netty的设计使得添加新的协议、编解码器或者处理逻辑变得简单,易于扩展和维护。 通过以上知识点的学习,我们可以构建一个功能完善的Netty聊天室,支持多用户同时在线聊天,具备消息传递、用户认证、心跳检查等...
在“netty proxy 代理例子”中,我们将会探讨如何利用 Netty 实现一个代理服务器,该代理服务器可以转发客户端的请求到目标服务器,并将响应回传给客户端。 首先,我们需要理解代理服务器的基本原理。代理服务器...
在本项目中,"springboot+netty开发简易式游戏源码"是一个使用Spring Boot和Netty框架构建的轻量级游戏服务器的示例。这个项目结合了两个强大的技术,旨在提供一个高效、可扩展的游戏后端解决方案。下面将详细阐述...
在本文中,我们将深入探讨Netty在实际应用中的实例——对象传递调用,以及如何解决TCP粘包问题。同时,我们还会讨论Java序列化方案在Netty中的编解码对比。 首先,让我们来看看TCP粘包问题。在TCP协议中,由于其...
在本文中,我们将深入探讨如何利用Netty 4构建一个简单的服务端和客户端实例,以及如何在IntelliJ IDEA 2018.1.3这个强大的Java开发环境中设置和运行这些实例。 首先,Netty 4相较于之前的版本,引入了更多的性能...
在本文中,我们将深入探讨 Netty 4 的完整配置以及如何通过实例来理解和应用它。 1. **Netty 4 版本差异**: Netty 的不同版本可能在API、性能优化或新特性上有所变化。例如,Netty 4.x 引入了更多的Java 8特性和...
在描述中提到的"netty并发服务器实例代码",意味着这个压缩包可能包含了使用Netty框架搭建的一个服务器端应用的源码。通常,这样的服务器会处理大量的并发连接,并且能够高效地处理来自客户端的请求。Netty的非阻塞I...
Netty提供了WebSocketServer和WebSocketClient两个处理器,使得实现WebSocket服务变得简单。 在"netty_server"实例代码中,我们可以预期看到以下关键组件: 1. **Bootstrap**:这是服务器启动器,用来配置和启动...
在我们的简易版 Netty Tomcat 中,我们可以直接读取这些静态文件作为响应内容。 通过这个实践,你可以深入了解 Netty 如何处理网络通信,以及如何实现一个基本的 HTTP 服务器容器。这不仅加深了对 Netty 框架的理解...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个压缩包包含的是Netty 4.0.0.CR3版本的相关资源,包括源码、示例以及API文档,对于学习和理解Netty的工作...
"Netty 入门经典例子" Netty 是一个异步的、事件驱动的网络编程框架和工具,使用 Netty 可以快速开发出可维护的、high-performance 的协议服务及其客户端应用。Netty 相当简化和流线化了网络应用的编程开发过程,...
总之,通过这三个简单的例子,你可以理解Netty的基本工作原理,包括服务器和客户端的搭建,以及处理器链的配置。继续探索Netty提供的丰富功能,如编解码器、心跳机制和多线程模型,将有助于你进一步提升在网络编程...