2015-05-04 113 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; 
}