具有匿名线程的反应堆调度程序

皮斯兹

我正在测试 reactor 的工作原理,创建了与 reactor 文档中的代码非常相似的代码。

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import reactor.core.publisher.Mono;
import reactor.core.scheduler.Scheduler;
import reactor.core.scheduler.Schedulers;

@SpringBootTest
@RunWith(SpringRunner.class)
public class ReactorApplicationTests {

  @Test
  public void publishOnThreadTest() {
    Scheduler s = Schedulers.newParallel("parallel-scheduler", 4);

    final Mono<String> mono = Mono.just("Publish on test: \n")
            .map(msg -> msg + "before: " + Thread.currentThread() )
            .publishOn(s)
            .map(msg -> msg + "\nafter: " + Thread.currentThread());

    new Thread(() -> mono.subscribe(System.out::println)).start();
  }
}

我不能让它运行,我做错了什么?只需订阅它就可以工作,但我想查看使用的线程并使用它。

阿列克谢·凯戈罗多夫

您的测试程序不打印任何内容的原因是它退出得太早。它应该等到 substriber 的方法被调用:

@Test
public void publishOnThreadTest() throws InterruptedException {
    Scheduler s = Schedulers.newParallel("parallel-scheduler", 4);
    CountDownLatch latch = new CountDownLatch(1);

    final Mono<String> mono = Mono.just("Publish on test: \n")
            .map(msg -> msg + "before: " + Thread.currentThread() )
            .publishOn(s)
            .map(msg -> msg + "\nafter: " + Thread.currentThread());

    new Thread(() -> mono.subscribe((String str) ->{
        System.out.println(str);
        latch.countDown();
    })).start();

    latch.await();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从线程运行扭曲反应堆

来自分类Dev

反应堆lmax线程转储

来自分类Dev

替代扭曲的while循环,不会阻塞反应堆线程

来自分类Dev

替代扭曲的while循环,不会阻塞反应堆线程

来自分类Dev

我该如何解决错误“线程'主'在'没有当前反应堆'中惊慌'”的错误?

来自分类Dev

通量春5反应堆没有订阅

来自分类Dev

弹簧整合反应堆

来自分类Dev

反应堆测试失败

来自分类Dev

单线程与多线程中的反应堆设计模式

来自分类Dev

单线程与多线程中的反应堆设计模式

来自分类Dev

具有大量匿名线程的Jboss 4.2.3应用程序

来自分类Dev

扭曲的ExtendSelected反应堆错误

来自分类Dev

流星JS $近反应堆

来自分类Dev

扭曲的Python暂停/推迟反应堆

来自分类Dev

反应堆取消订阅的方式

来自分类Dev

如何使用flatMap()在反应堆语境?

来自分类Dev

与反应堆抛出异常的正确方法

来自分类Dev

WebFlux(反应堆)中的文件处理

来自分类Dev

项目反应堆背压问题

来自分类Dev

流星JS $近反应堆

来自分类Dev

在iPython中运行扭曲反应堆

来自分类Dev

Maven错误:“反应堆项目列表中没有SNAPSHOT项目。”

来自分类Dev

您是否有测试来显示反应堆map()和flatMap()之间的差异?

来自分类Dev

反应堆v1.xx与反应堆v2.xx

来自分类Dev

工程反应堆:设计一个反应API

来自分类Dev

使用某种任务调度或多线程将 Word 自动化应用程序转换为具有多个线程

来自分类Dev

如何知道反应堆是否在python中运行?

来自分类Dev

在Spring中使用哪种“ EventBus”?内置反应堆,Akka?

来自分类Dev

我如何从反应堆运行state.sls