CarpenterLee / JavaLambdaInternals

深入理解Java函数式编程和Streams API

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于sink设计的一个小疑问

SuperNoobTao opened this issue · comments

图片

作者大大你好,我似乎陷入了某种困境,在读完上面这句话:你可能会觉得这很简单,只需要从流水线的head开始依次执行每一步的操作(包括回调函数)就行了。这听起来似乎是可行的,但是你忽略了前面的Stage并不知道后面Stage到底执行了哪种操作,以及回调函数是哪种形式。换句话说,只有当前Stage本身才知道该如何执行自己包含的动作。这就需要有某种协议来协调相邻Stage之间的调用关系。

我竟然感觉"只需要从流水线的head开始依次执行每一步的操作(包括回调函数)就行了"这句话没问题。。。
1.当前stage做好自己事就好了吧,为啥要知道后面的stage呢?
2.尽管使用了sink,也还是当前sink做自己事,也没有管后面的sink额。。
3.如果说是为了协调调用关系的话,stage本来也就是双链的,上一个是谁,下一个是谁,清楚的很。
哭了,所以我不太清楚设计sink的目的,看起来似乎只是把处理数据的操作单独拎了出来。。。求解惑呀../(ㄒoㄒ)/~~

图片

作者大大你好,我似乎陷入了某种困境,在读完上面这句话:你可能会觉得这很简单,只需要从流水线的head开始依次执行每一步的操作(包括回调函数)就行了。这听起来似乎是可行的,但是你忽略了前面的Stage并不知道后面Stage到底执行了哪种操作,以及回调函数是哪种形式。换句话说,只有当前Stage本身才知道该如何执行自己包含的动作。这就需要有某种协议来协调相邻Stage之间的调用关系。

我竟然感觉"只需要从流水线的head开始依次执行每一步的操作(包括回调函数)就行了"这句话没问题。。。 1.当前stage做好自己事就好了吧,为啥要知道后面的stage呢? 2.尽管使用了sink,也还是当前sink做自己事,也没有管后面的sink额。。 3.如果说是为了协调调用关系的话,stage本来也就是双链的,上一个是谁,下一个是谁,清楚的很。 哭了,所以我不太清楚设计sink的目的,看起来似乎只是把处理数据的操作单独拎了出来。。。求解惑呀../(ㄒoㄒ)/~~

我的理解是 作者说操作分短路操作和非短路操作 当执行到某一阶段时,需要判断下游stage是否含有短路操作,方便及时停止执行后面的操作,所以设计成双向链表