Содержание
- Параллельное исполнение
- Развитие параллельных систем
- Потоки и процессы
- Типы параллелизма
- Итеративный
- Рекурсивный
- Обмен сообщениями
- Неделимые операции
- Безусловные
- Условные
- Свойства планировщика
- Потоки
- Создание потоков
- Состояния и свойства потоков
- Завершение потоков
- Механизм прерывания
Домашнее задание 7. Итеративный параллелизм
-
Реализуйте класс
IterativeParallelism
,
который будет обрабатывать списки в несколько потоков.
-
В простом варианте должны быть реализованы следующие методы:
minimum(threads, list, comparator)
—
первый минимум;
maximum(threads, list, comparator)
—
первый максимум;
all(threads, list, predicate)
—
проверка, что все элементы списка, удовлетворяют предикату;
any(threads, list, predicate)
—
проверка, что существует элемент списка, удовлетворяющий предикату.
count(threads, list, predicate)
—
подсчёт числа элементов списка, удовлетворяющих предикату.
-
В сложном варианте должны быть дополнительно реализованы следующие методы:
filter(threads, list, predicate)
—
вернуть список, содержащий элементы удовлетворяющие предикату;
map(threads, list, function)
—
вернуть список, содержащий результаты применения функции;
join(threads, list)
—
конкатенация строковых представлений элементов списка.
-
Во все функции передается параметр
threads
—
сколько потоков надо использовать при вычислении.
Вы можете рассчитывать, что число потоков относительно мало.
-
Не следует рассчитывать на то, что переданные компараторы,
предикаты и функции работают быстро.
-
При выполнении задания нельзя использовать
Concurrency Utilities и Parallel Streams.