所有类和接口

说明
 
默认的实现仅仅是简单的将任务分配给某个EventLoop执行
 
子类需要在AbstractUniExecutor.execute(Runnable)的时候为任务赋值id和options
future的聚合选项
该异常可以传递取消码
如果一个操作可能导致死锁状态将抛出该异常 通常是因为监听者和执行者在同一个线程,监听者尝试阻塞等待结果。
 
取消码辅助类
该接口用于特殊需求时减少闭包
取消令牌源由任务的创建者(发起者)持有,具备取消权限。
默认上下文实现
 
 
借鉴于Netty的DefaultThreadFactory 和JDK的Executors中的DefaultThreadFactory实现
默认的executor实现,通过限制每帧执行的任务数来平滑开销
 
基于Disruptor框架的事件循环。
 
事件循环 它是单线程的,它保证任务不会并发执行,且任务的执行顺序和提交顺序一致。
Agent是EventLoop的内部代理,是EventLoop的内部策略实现,通常不暴露给EventLoop外部
 
 
事件循环选择器,用于负载均衡和确定选择。
 
 
事件循环线程组,它管理着一组EventLoop
 
事件循环的模块 1.该接口为标记接口,具体的行为由子接口决定。
EventLoop的状态 -- UniExecutor也使用该枚举。
固定数量EventLoop的事件循环线程组 它提供了相同key选择相同EventLoop的方法。
提供转发功能的基类 由于Future中存在取消接口,因此该类还不是Readonly的。
在调用选择方法之前,你可以添加任意的IFuture以进行监听。
该类用于打印并发库中的错误日志
该handler只应该输出日志
 
受保护的操作,与BlockingOperationException成一对。
EventLoopAgent接收的事件类型
取消令牌
取消令牌源由任务的创建者(发起者)持有,具备取消权限。
线程控制
异步任务的上下文 在异步和并发编程中,共享上下文是很必要的,且显式的共享优于隐式的共享。
IExecutorExecutor的基础上增加了调度选项。
命名:我们使用清晰的命名后缀,以免使用lambda时的语义不清。
1.Future是任务和用户之间通信的媒介。
FutureTask是Executor压入的可获取结果的任务类型 1.该接口暴露给Executor的扩展类,不是用户使用的类。
 
注册监听器产生的句柄。
不继承ScheduledExecutorService,JDK的ScheduledFuture设计有问题。
定时任务关联的Future。
可获取结果的延时任务
定时任务关联的Promise
Task是Executor中调度的任务抽象。
在调用选择方法之前,你可以添加任意的CompletableFuture以进行监听。
提供最小支持的AgentEvent
满足最小需要的Context实现。
声明IFuture接口加快instanceof测试
ps:该类的数据是(部分)开放的,以支持不同的扩展。
 
IPromise提供只读视图
当提交的任务被拒绝时的处理策略,修改自JDK的或者说Netty的拒绝策略。
 
被缓存的事件对象 1.用于Disruptor或类似的系统,当我们缓存对象时,更适合将字段展开以提高内存利用率 2.这只是个简单的数据传输对象,getter/setter什么的不必要 3.实现Runnable以支持直接提交到Executor 4.支持EventLoopAgent的都将支持该事件。
 
定时任务的Task抽象 这个实现有较多特殊逻辑,不适合对外
该对象为临时对象,应避免共享
一个简单的Watcher管理器 由于多用在多线程环境下,因此提供了缓存行填充特性
单线程的Executor
不打印堆栈的取消异常
用于表示EventLoop启动失败
任务构建器
该异常表示FutureCombiner监听的任务数不足以到达成功条件
任务调度选项
 
JDK设定的任务状态Future.State并未将【等待中】和【执行中】这两种状态分开, 大多数情况下这种设定并没有影响,但在涉及取消时,将等待中和执行中分开是有利的。
超时管理上下文
可分时运行的任务 - 需要长时间运行才能得出结果的任务。
单线程版的取消令牌。
用于在当前线程延迟执行任务的Executor -- IExecutorService
单线程化改动: 1.计数变量改为普通变量 2.Promise的默认实例为UniPromise
 
单线程版本的IPromise 1.省去了接口抽象,单线程版本直接使用该类即可 -- 省去抽象可减少开销。
定时任务调度器,时间单位取决于具体的实现,通常是毫秒 -- 也可能是帧数。
 
定时任务的Task抽象 与ScheduledPromiseTask的几个区别: 1.
Watcher管理器
实现时要小心线程安全问题