0

如何在使用线程池时增加线程数我的代码如下,

@SpringBootApplication
@EnableReactor
public class Application implements CommandLineRunner {
    @Autowired
    private Reactor reactor

    @Bean
    Reactor createReactor(Environment env) {
    return Reactors.reactor()
            .env(env)
            .dispatcher(Environment.THREAD_POOL)
            .get();
    }

添加以下代码并没有增加线程数,默认固定为机器上的核心数。

@Bean
public AsyncTaskExecutor workQueueAsyncTaskExecutor(Environment env) {
    return new WorkQueueAsyncTaskExecutor(env)
        .setName("workQueueExecutor")
        .setBacklog(2048)
        .setThreads(20)
        .setWaitStrategy(new YieldingWaitStrategy());
}

如何为我的反应器变量设置线程数?

如果我删除createReactorbean,反应器工作正常,只是默认为RingBuffer单线程。使用该 bean 和 的规范THREAD_POOL,将启动与机器上的内核数相等的线程。我只是想看看如何手动增加该计数...

谢谢

4

1 回答 1

0

@jbrisbin 在 gitter 上回答了它,https: //gitter.im/reactor/reactor?at=5548f40f52bceea22c3814e0

只是为了方便,答案是为dispatcher创建一个bean,并从reactor创建bean中引用它

@Bean
Reactor createReactor(Environment env) {
    Reactor r = Reactors.reactor().env(env).dispatcher(createDispatcher()).get();
    return r;
}

@Bean
Dispatcher createDispatcher() {
    Dispatcher d = new WorkQueueDispatcher("multThreadedQueueDispatcher", 20, 2048, null);
    return d;
}
于 2015-05-05T20:51:58.270 回答