simforkjoin — это упрощённая версия параллельной задачи forkjoin, которая используется для решения проблемы низкой производительности при обработке большого объёма данных в однопоточном режиме в проектах Springboot. С помощью аннотации задачи разделяются на несколько потоков, что позволяет повысить производительность обработки.
Примечание: параллельная обработка не всегда может привести к увеличению скорости обработки, также это зависит от процессора сервера и других потерь ввода-вывода. Выбор следует делать исходя из конкретной ситуации.
<dependency>
<groupId>cn.langpy</groupId>
<artifactId>simforkjoin</artifactId>
<version>1.0.1</version>
</dependency>
После добавления аннотации метод автоматически разбивается на несколько задач во время выполнения, без необходимости вручную разделять задачи и объединять результаты.
@Forkjoin
public List<T> test(List<T> param){
...
}
Threshold указывает количество элементов, обрабатываемых каждой задачей. По умолчанию установлено значение 400. Элементы, размер которых меньше threshold, не будут разделены.
Можно использовать собственный пул потоков (в виде spring bean), если стандартный пул не удовлетворяет требованиям.
Указывает, имеет ли метод, помеченный @Forkjoin, возвращаемое значение. По умолчанию возвращается значение.
Например, есть список list типа List, и каждый элемент списка необходимо обработать, а затем вернуть результат обработки. Однако, если размер списка слишком велик, обработка будет медленной, поэтому можно распараллелить обработку списка и объединить результаты. В этом случае можно использовать:
@Forkjoin
public List<T> test(List<T> list){
for(int i=0;i<list.size();i++){
T t = list.get(i);
/*другие операции*/
list.set(i,t);
}
return list;
}
@Autowired
TestService testService;
List list = .....
List newList = testService.test(list);
V1.0-SNAPSHOT:
В отличие от традиционного Fork/join, этот проект не будет дополнительно разделять подзадачи после разделения основной задачи на основе threshold. Например, задача с 1000 элементами данных после разделения на основе threshold не будет разделена дальше на подзадачи.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )