ThreadFlow
Инструмент для организации потоков. Может выполнять любую последовательность параллельных комбинаций потоков;
Каждый блок может иметь свои параметры и возвращаемые значения. Поддерживает асинхронный обратный вызов результатов отдельных блоков.
Поддерживает контроль тайм-аута для отдельных блоков;
Поддерживает тайм-аут вызова общей задачи и вызов результата после завершения общей задачи;
Поддерживает динамическое решение о пропуске выполнения блоков, которые не были выполнены и больше не должны выполняться, а также может прерывать поток, который выполняется, но не должен продолжаться;
Каждый блок можно использовать в разных хореографиях задач;
Поддержка динамического изменения последующих блоков;
Если у вас есть хорошие предложения, пожалуйста, оставьте сообщение;
Если вам нравится или это полезно, поставьте звезду :)
Понимание этого проекта можно увидеть из тестовых случаев в тесте.
Основные функции:
1. Последовательный вызов потока:
1.1. порядок выполнения A -> B -> C
стоимость выполнения 1
1
1
блок: секунда
исключительно N N N
Ожидается: блок C выполняется после блока B, который выполняется после блока A
1.2. порядок выполнения A -> B -> C
стоимость выполнения
1
1
1
блок: секунда
исключительно N Y N
Ожидается: блок B выполняется исключительно после успешного выполнения блока A, блок C напрямую становится исключительным, чтобы избежать выполнения
2. Простой параллельный вызов:
2.1 все не нужны для следующего
блоки A,B,C не нужны для блока D, затем блок D выполняется после первого успешного выполнения в A,B,C
A -- ненужный успешный 1 секунда-->
B -- ненужный успешный 2 секунда--> D -- успешный 0,5 секунды--
C -- ненужный успешный 2 секунда-->
Ожидается: блок D выполняется после успешного выполнения блока A. Устанавливается состояние выполнения B,C как исключительное. Примерно через 1,5 секунд мы можем получить результат блока D.
2.2 некоторые необходимы, а некоторые не нужны для следующих
блок A необходим для блока D, а блоки B,C не нужны для блока D. Затем блок A сначала успешно выполняется, и блок D не должен выполняться в это время до тех пор, пока первый не будет успешно выполнен в B,C
A -- необходимый успешный 1 секунда-->
B -- ненужный успешный 2 секунда--> D -- успешный 0,5 секунда--
C -- ненужный успешный 2 секунда-->
Ожидается: блок D выполняется после того, как первый успешно выполнится в B,C. Мы можем получить результат через 2,5 секунды.
2.3 все необходимы для следующих
блоки A,B,C необходимы для блока D, тогда блок D выполняется после последнего успешного выполнения в A,B,C
A -- необходимый успешный 1 секунда-->
B -- Необходимые и успешные условия выполнения: 2 секунды
D — успешно выполняется за 0,5 секунды.
C — необходимо для успешного выполнения, которое занимает 3 секунды.
Ожидается: D выполняется после успешного завершения блока C.
Все необходимые условия для следующего блока, кроме одного из предыдущих, выполняются исключительно.
Блок A необходим для блока D, успешно выполняется за одну секунду.
Блок B необходим для блока D, выполняется исключительно за одну секунду.
Блок C необходим для блока D, успешно выполняется за две секунды.
A — необходимо, успешное выполнение за 1 секунду.
B — необходимо, исключительное выполнение за 1 секунду.
C — необходимо, успешное выполнение за 2 секунды.
Ожидается: блок D устанавливает своё состояние выполнения как исключительное, чтобы аннулировать выполнение, и устанавливает состояние выполнения блока C как исключительное после исключительного выполнения блока B.
Последовательная параллельная комбинация
A — выполняется за 1 секунду.
C — не требуется, выполняется за 1 секунду.
B — выполняется за 1 секунду.
F —>
D — выполняется 10 секунд.
E — не требуется, выполняется за 1 секунду.
Блоки A, B и D запускаются одновременно. В конце блок F выполняется после успешного выполнения блока C. Состояние выполнения блока E устанавливается как исключительное для аннулирования выполнения, а состояние выполнения блока D устанавливается как исключительное. Поток блока D прерывается, если enableInterrupted блока D имеет значение true.
WorkHandler можно расширить
Пример:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )