Reactor中无界队列 SpscLinkedQueue Reactor为我们提供了一下无界队列,其本身又是怎么去实现 "无界"的,我们对此比较好奇 @SuppressWarnings("rawtypes") static final Supplier SMALL_UNBOUNDED = () -> Hooks.wrapQueue(new SpscLinkedArrayQueue<>(SMALL_BUFFER_SIZE)); public static fi…
Reactor中无界队列 SpscLinkedQueue Reactor为我们提供了一下无界队列,其本身又是怎么去实现 "无界"的,我们对此比较好奇 @SuppressWarnings("rawtypes") static final Supplier SMALL_UNBOUNDED = () -> Hooks.wrapQueue(new SpscLinkedArrayQueue<>(SMALL_BUFFER_SIZE)); public static fi…
generate挂钩函数式 使用 generate也可以快速去生成响应式流,从 generate进行剖析,我们也可以看到函数式编程的影子 public static <T> Flux<T> generate(Consumer<SynchronousSink<T>> generator) { Objects.requireNonNull(generator, "generator"); return onAssembly(new FluxGenera…
FluxCreate解读 // FluxSink具有消费数据的能力, 结合 accept(T t) // 参数可以理解为 逻辑上的一个动作 - 懒加载, 出于机器性能考虑 public static <T> Flux<T> create(Consumer< ? super FluxSink<T>> emitter) { return create(emitter, OverflowStrategy.BUFFER); } // 参数一:FluxSink emitter …
AtomicXXXFieldUpdater技巧 考虑一种情况,假如我们的类中需要假如定义两个或者更多的原子类型,仅仅将类本身去定义为原子类型去操作它是远远不够的,通常把我们可能会去使用 AtomicReference的方式使其变成原子类,然后我们再去进行相关的原子操作 实际上,这是一种比较糟糕的做法,最直观的便是内存上的问题,因此这里介绍下 AtomicXXXReferenceUpdater的玩法 以 Reactor#LambdaSubscriber为例: // 底层 volatile Subscription s…
一 | 二 | 三 | 四 | 五 | 六 | 日 |
---|---|---|---|---|---|---|
« 3月 | ||||||
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 |
COPYRIGHT © 2020 良夜的博客. ALL RIGHTS RESERVED.
This blog has been running:
本站由
This site is protected by wp-copyrightpro.com