SimpleAsyncTaskExecutor的最大线程大小是多少? -春季批

时间:2020-03-23 16:37:12

标签: spring multithreading spring-batch

我需要进行大量的迁移工作并转换大量数据。 因此,我实现了SimpleAsyncTaskExecutor ...

ConcurrencyLimit是否有最佳实践?

> desired_output
# A tibble: 10 x 5
   DATE_FIRE  FID_FIRE date        NDVI meanPrefire
   <chr>         <dbl> <chr>      <dbl>       <dbl>
 1 1989-07-31        1 1988-01-01  0.9        0.85 
 2 1989-07-31        1 1989-01-01  0.8        0.85 
 3 1989-07-31        1 1990-01-01  0.1        0.85 
 4 1989-07-31        1 1991-06-07  0.2        0.85 
 5 1989-07-31        1 1992-01-01  0.3        0.85 
 6 1989-08-31        2 1988-01-01  0.8        0.825
 7 1989-08-31        2 1989-01-01  0.85       0.825
 8 1989-08-31        2 1990-01-01  0.15       0.825
 9 1989-08-31        2 1991-06-07  0.3        0.825
10 1989-08-31        2 1992-01-01  0.5        0.825

1 个答案:

答案 0 :(得分:0)

这在很大程度上取决于您要生成的负载类型。它主要是受CPU约束还是受IO约束?

如果它受CPU限制,那么如果线程多于CPU内核,那么您将一无所获。实际上,由于不必要的上下文切换和无用的调度开销,您会迷路。

如果受IO限制,则需要进行实验,在给定硬件设置和负载的确切类型的情况下,并行度的最佳点是产生最高的吞吐量。我将从低个位数的线程开始,然后不断加倍,以快速了解吞吐量如何随线程数变化。如果最好的结果是线程数量很少,请不要感到惊讶。