org.jboss.netty.util
类 HashedWheelTimer

java.lang.Object
  继承者 org.jboss.netty.util.HashedWheelTimer
所有已实现的接口:
Timer

public class HashedWheelTimer
extends java.lang.Object
implements Timer

A Timer optimized for approximated I/O timeout scheduling.

Tick持续时间

正如'大约'所描述,这个启动器并不会准时执行定时 TimerTask. HashedWheelTimer 会在每一次tick检查是否有其他TimerTask在该启动器后部并执行它们.

你可以在构造方法里指定更小或更大的tick持久时间增加或减少执行定时时间的准确性.在很多网络应用程序中,I/O过期时间并不需要很精确. 因此,默认的tick持久时间是100毫秒,大多数情况下你不需要修改该配置.

每轮Tick的次数(轮大小)

HashedWheelTimer维护着一个叫做'轮子'的数据结构. 为了简单放入,一个轮子是一个包含TimerTask 的哈希方法是'任务终止'的哈希表.默认每轮tick的数量(如.轮的大小)是512.如果你想计划更多的过期值,你可以指定一个更大的值.

别创建多个实例.

HashedWheelTimer creates a new thread whenever it is instantiated and started. Therefore, you should make sure to create only one instance and share it across your application. One of the common mistakes, that makes your application unresponsive, is to create a new instance in ChannelPipelineFactory, which results in the creation of a new thread for every connection.

Implementation Details

HashedWheelTimer is based on George Varghese and Tony Lauck's paper, 'Hashed and Hierarchical Timing Wheels: data structures to efficiently implement a timer facility'. More comprehensive slides are located here.


构造方法摘要
HashedWheelTimer()
          使用默认的线程工厂(Executors.defaultThreadFactory() )、默认每轮tick的数量、默认tick持久时间创建一个计时器.
HashedWheelTimer(long tickDuration, java.util.concurrent.TimeUnit unit)
          使用默认的线程工厂(Executors.defaultThreadFactory())和默认每轮tick的数量创建一个计时器.
HashedWheelTimer(long tickDuration, java.util.concurrent.TimeUnit unit, int ticksPerWheel)
          使用默认的线程工厂( Executors.defaultThreadFactory())创建一个计时器.
HashedWheelTimer(java.util.concurrent.ThreadFactory threadFactory)
          使用默认每轮tick数量和默认tick持续时间创建一个计时器.
HashedWheelTimer(java.util.concurrent.ThreadFactory threadFactory, long tickDuration, java.util.concurrent.TimeUnit unit)
          使用默认每轮tick数量创建一个计时器.
HashedWheelTimer(java.util.concurrent.ThreadFactory threadFactory, long tickDuration, java.util.concurrent.TimeUnit unit, int ticksPerWheel)
          创建一个新的计时器.
 
方法摘要
 Timeout newTimeout(TimerTask task, long delay, java.util.concurrent.TimeUnit unit)
          在指定的延迟后执行一次计划指定的TimerTask.
 void start()
          明确启动一个后台线程.即使你不调用该方法,后台线程也会在需要的时候自动启动.
 java.util.Set<Timeout> stop()
          释放使用该Timer获取的所有资源并取消被计划但还没有执行的所有任务.
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

HashedWheelTimer

public HashedWheelTimer()
使用默认的线程工厂(Executors.defaultThreadFactory() )、默认每轮tick的数量、默认tick持久时间创建一个计时器.


HashedWheelTimer

public HashedWheelTimer(long tickDuration,
                        java.util.concurrent.TimeUnit unit)
使用默认的线程工厂(Executors.defaultThreadFactory())和默认每轮tick的数量创建一个计时器.

参数:
tickDuration - tick的持续时间
unit - tick持续时间的单位

HashedWheelTimer

public HashedWheelTimer(long tickDuration,
                        java.util.concurrent.TimeUnit unit,
                        int ticksPerWheel)
使用默认的线程工厂( Executors.defaultThreadFactory())创建一个计时器.

参数:
tickDuration - tick的持续时间
unit - tick持续时间的单位
ticksPerWheel - 每轮tick的大小

HashedWheelTimer

public HashedWheelTimer(java.util.concurrent.ThreadFactory threadFactory)
使用默认每轮tick数量和默认tick持续时间创建一个计时器.

参数:
threadFactory - 用于创建一个专用于TimerTask执行的后台线程的工厂.

HashedWheelTimer

public HashedWheelTimer(java.util.concurrent.ThreadFactory threadFactory,
                        long tickDuration,
                        java.util.concurrent.TimeUnit unit)
使用默认每轮tick数量创建一个计时器.

参数:
threadFactory - 用于创建一个专用于TimerTask执行的后台线程的工厂.
tickDuration - tick的持续时间
unit - tick持续时间的单位

HashedWheelTimer

public HashedWheelTimer(java.util.concurrent.ThreadFactory threadFactory,
                        long tickDuration,
                        java.util.concurrent.TimeUnit unit,
                        int ticksPerWheel)
创建一个新的计时器.

参数:
threadFactory - 用于创建一个专用于TimerTask执行的后台线程的工厂.
tickDuration - tick的持续时间
unit - tick持续时间的单位
ticksPerWheel - 每次tick的大小
方法详细信息

start

public void start()
明确启动一个后台线程.即使你不调用该方法,后台线程也会在需要的时候自动启动.

抛出:
java.lang.IllegalStateException - 如果该计时器已经被关闭,则抛出异常

stop

public java.util.Set<Timeout> stop()
从接口 Timer 复制的描述
释放使用该Timer获取的所有资源并取消被计划但还没有执行的所有任务.

指定者:
接口 Timer 中的 stop
返回:
通过该方法取消任务关联的处理器.

newTimeout

public Timeout newTimeout(TimerTask task,
                          long delay,
                          java.util.concurrent.TimeUnit unit)
从接口 Timer 复制的描述
在指定的延迟后执行一次计划指定的TimerTask.

指定者:
接口 Timer 中的 newTimeout
返回:
返回关联指定任务的处理器