-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathnetty-async.java
77 lines (58 loc) · 1.87 KB
/
netty-async.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
----------------------------
异步机制 |
----------------------------
# jdk的 Future
* 只能通过手动的方式检查执行结果,并且会阻塞
# ChannelFuture
* 通过监听器的方式,以回调的方式来获取执行结果,不需要手动检查,不会阻塞
* ChannelFutureListener 的回调方法 operationComplete(F future) 是由IO线程去执行的,所以不要在这里执行耗时的操作,可以使用线程池去执行
# ChannelPromise
* 继承自 ChannelFuture ,Promise
* 可以由开发者去控制是否成功,还是失败
* 常用
DefaultPromise<String> promise = new DefaultPromise<String>(GlobalEventExecutor.INSTANCE);
--------------------------------
ChannelFuture |
--------------------------------
# 方法
Channel channel();
* 返回关联的channel
@Override
ChannelFuture addListener(GenericFutureListener<? extends Future<? super Void>> listener);
* 添加一个监听
@Override
ChannelFuture addListeners(GenericFutureListener<? extends Future<? super Void>>... listeners);
* 添加多个监听
@Override
ChannelFuture removeListener(GenericFutureListener<? extends Future<? super Void>> listener);
* 移除一个监听
@Override
ChannelFuture removeListeners(GenericFutureListener<? extends Future<? super Void>>... listeners);
* 移除多个监听
ChannelFuture sync()
* 同步,线程阻塞,直到任务完成
Throwable cause()
* 返回异常信息
boolean isSuccess();
* 是否操作成功
boolean isVoid();
# ChannelFutureListener
* 空继承了接口:GenericFutureListener
* 预定义了N个实例
CLOSE
* 完成后关闭连接
CLOSE_ON_FAILURE
* 如果抛出了异常,关闭连接
FIRE_EXCEPTION_ON_FAILURE
--------------------------------
ChannelPromise |
--------------------------------
# 继承自 ChannelFuture ,Promise
# 新增加了一个机制:可写
@Override
ChannelPromise setSuccess(Void result);
@Override
ChannelPromise setFailure(Throwable cause);
ChannelPromise setSuccess();
boolean trySuccess();
ChannelPromise unvoid();