kaq*_*qao 1 java concurrency spring project-reactor reactive-streams
我知道 aPublisher不能同时发布,但是如果我使用Flux#create(FluxSink),我可以安全地FluxSink#next同时调用吗?
换句话说,即使FluxSink#next并发调用,Spring 是否具有确保事件正确串行发布的内部魔法?
public class FluxTest {
private final Map<String, FluxSink<Item>> sinks = new ConcurrentHashMap<>();
// Store a new sink for the given ID
public void start(String id) {
Flux.create(sink -> sinks.put(id, sink));
}
// Called from different threads
public void publish(String id, Item item) {
sinks.get(id).next(item); //<----------- Is this safe??
}
}
Run Code Online (Sandbox Code Playgroud)
它的声音,我喜欢这一段的官方指南中指出,上述确实是安全的,但我不是在我的理解非常有信心。
create是一种更高级的 Flux 编程创建形式,适用于每轮多次发射,甚至来自多个线程。
是的,Flux.create产生一个SerializedSink可以从多个线程安全使用的next调用
| 归档时间: |
|
| 查看次数: |
1894 次 |
| 最近记录: |