2015-05-04 114 views
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()); 
} 

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

如果我删除createReactor bean,反应器工作正常,只是默认为RingBuffer单线程。使用该bean和THREAD_POOL的规格,将启动等于机器上的内核数量的线程。 我只是想知道怎样才能增加人工计数......

感谢

回答

0

它是由@jbrisbin对小胶质回答,https://gitter.im/reactor/reactor?at=5548f40f52bceea22c3814e0

只是为了方便,答案是创建一个调度员的bean并从反应器创建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; 
}