javaFlatmapDivideAsyncBug - javafaltmap流异步bug
1 考虑这么一部分代码
1 | flatMap(queryResponseAfterAsr -> |
注意,上述看起来保证了在2,3过程当中,1的saasInstance为2,3中的instanceId。
但实际上可能由saas1流里的3的某个部分block了(比如异步开线程查了数据库)
,然后faltmap的第saas2,saas3对应的流修改queryResponseAfterAsr中的saasInstance,
从而导致saas1流看到的queryResponseAfterAsr.saasInstance不再最初的saas1。
2 总结
一个好的思维模式:流之间去耦合是必要的,若不同的流有相同的依赖状态,确保每个流拥有它的一个复制。