| 限定符和类型 | 字段和说明 |
|---|---|
static int |
WORKER_STATE_INIT
定义worker的3个状态:初始化、启动、关闭
|
static int |
WORKER_STATE_SHUTDOWN |
static int |
WORKER_STATE_STARTED |
int |
workerState
当前时间轮的状态
|
| 构造器和说明 |
|---|
HashedWheelTimer()
创建时间轮 - 使用默认线程工厂,100ms 转一格, 512格 ,启用内存溢出检测,不设置最大等待处理次数
|
HashedWheelTimer(long tickDuration,
TimeUnit unit)
创建时间轮 - 使用默认线程工厂,512格 ,启用内存溢出检测,不设置最大等待处理次数
|
HashedWheelTimer(long tickDuration,
TimeUnit unit,
int ticksPerWheel)
创建时间轮 - 使用默认线程工厂,启用内存溢出检测,不设置最大等待处理次数
|
HashedWheelTimer(ThreadFactory threadFactory,
long tickDuration,
TimeUnit unit,
int ticksPerWheel)
创建时间轮 - 启用内存溢出检测,不设置最大等待处理次数
|
HashedWheelTimer(ThreadFactory threadFactory,
long tickDuration,
TimeUnit unit,
int ticksPerWheel,
boolean leakDetection)
创建时间轮 -不设置 最大等待处理次数
|
HashedWheelTimer(ThreadFactory threadFactory,
long tickDuration,
TimeUnit unit,
int ticksPerWheel,
boolean leakDetection,
long maxPendingTimeouts)
时间轮的构造函数
|
| 限定符和类型 | 方法和说明 |
|---|---|
void |
closeSwitch()
动态开关关闭
1、轮子每 tick ,只执行过期的定时任务
2、新的 newTimeout 添加的定时任务,添加到格子
|
protected void |
finalize() |
Timeout |
newTimeout(TimerTask task,
long delay,
TimeUnit unit)
newTimeout()添加定时任务
如果没有启动时间轮,则启动
|
void |
openSwitch()
动态开关开启
1、轮子每 tick ,将格子内所有定时任务执行
2、开关开启后的定时任务直接执行,不进入格子。
|
void |
start()
启动时间轮。
|
Set<Timeout> |
stop()
停止时间轮的方法
|
public static final int WORKER_STATE_INIT
public static final int WORKER_STATE_STARTED
public static final int WORKER_STATE_SHUTDOWN
public volatile int workerState
public HashedWheelTimer(ThreadFactory threadFactory, long tickDuration, TimeUnit unit, int ticksPerWheel, boolean leakDetection, long maxPendingTimeouts)
threadFactory - ThreadFactory用来创建执行TimerTask的 worker 线程 ThreadtickDuration - tick的时长,即指针多久转一格unit - tickDuration的时间单位ticksPerWheel - 每圈几格leakDetection - 是否开启内存泄露检测;
默认设置true
如果工作线程不是守护线程,需设置 falsemaxPendingTimeouts - 最大等待处理次数;
调用newTimeout的次数超过最大等待处理次数,将抛出异常RejectedExecutionException
如果该值为0或负值,则不考虑最大超时时间限制。public HashedWheelTimer()
public HashedWheelTimer(long tickDuration,
TimeUnit unit)
tickDuration - tick的时长,即指针多久转一格unit - tickDuration的时间单位public HashedWheelTimer(long tickDuration,
TimeUnit unit,
int ticksPerWheel)
tickDuration - tick的时长,即指针多久转一格unit - tickDuration的时间单位ticksPerWheel - 每圈几格public HashedWheelTimer(ThreadFactory threadFactory, long tickDuration, TimeUnit unit, int ticksPerWheel)
threadFactory - ThreadFactory用来创建执行TimerTask的 worker 线程 ThreadtickDuration - tick的时长,即指针多久转一格unit - tickDuration的时间单位ticksPerWheel - 每圈几格
默认设置true
如果工作线程不是守护线程,需设置 falsepublic HashedWheelTimer(ThreadFactory threadFactory, long tickDuration, TimeUnit unit, int ticksPerWheel, boolean leakDetection)
threadFactory - ThreadFactory用来创建执行TimerTask的 worker 线程 ThreadtickDuration - tick的时长,即指针多久转一格unit - tickDuration的时间单位ticksPerWheel - 每圈几格leakDetection - 是否开启内存泄露检测;
默认设置true
如果工作线程不是守护线程,需设置 falsepublic Timeout newTimeout(TimerTask task, long delay, TimeUnit unit)
TimernewTimeout 在接口中 Timertask - 定时任务delay - 延迟时间unit - 延迟时间单位public void start()
public void openSwitch()
TimeropenSwitch 在接口中 Timerpublic void closeSwitch()
TimercloseSwitch 在接口中 TimerCopyright © 2021. All rights reserved.