1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/huoyo-sim-forkjoin

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

simforkjoin

Введение

simforkjoin — это упрощённая версия параллельной задачи forkjoin, которая используется для решения проблемы низкой производительности при обработке большого объёма данных в однопоточном режиме в проектах Springboot. С помощью аннотации задачи разделяются на несколько потоков, что позволяет повысить производительность обработки.

Примечание: параллельная обработка не всегда может привести к увеличению скорости обработки, также это зависит от процессора сервера и других потерь ввода-вывода. Выбор следует делать исходя из конкретной ситуации.

Руководство по использованию

  1. Импортируйте зависимость:
 <dependency>
    <groupId>cn.langpy</groupId>
    <artifactId>simforkjoin</artifactId>
    <version>1.0.1</version>
  </dependency>
  1. Добавьте аннотацию @ForkJoin к методу, который необходимо распараллелить:

После добавления аннотации метод автоматически разбивается на несколько задач во время выполнения, без необходимости вручную разделять задачи и объединять результаты.

@Forkjoin
public List<T> test(List<T> param){
    ...
}

Примечания

1. Внутренние параметры @Forkjoin
1.1 threshold

Threshold указывает количество элементов, обрабатываемых каждой задачей. По умолчанию установлено значение 400. Элементы, размер которых меньше threshold, не будут разделены.

1.2 executor

Можно использовать собственный пул потоков (в виде spring bean), если стандартный пул не удовлетворяет требованиям.

1.3 isReturn

Указывает, имеет ли метод, помеченный @Forkjoin, возвращаемое значение. По умолчанию возвращается значение.

2. Параметры метода, помеченного @Forkjoin
2.1 Первый параметр метода должен быть типа List и не может быть пустым.

Сценарии использования

Например, есть список 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 )

Вы можете оставить комментарий после Вход в систему

Введение

SimForkJoin — это упрощённая версия ForkJoin параллельной задачи-аннотации, которая используется для решения проблемы с производительностью однопоточной обработки большого объёма данных в проектах Spring Boot. С помощью одной аннотации задача разделяется на несколько потоков для повышения производительности обработки. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/huoyo-sim-forkjoin.git
git@api.gitlife.ru:oschina-mirror/huoyo-sim-forkjoin.git
oschina-mirror
huoyo-sim-forkjoin
huoyo-sim-forkjoin
master