parallel-processing

Реализуйте параллельную обработку списка с помощью ParallelProcessor, который будет запускать операции обработки в несколько потоков (число потоков передаётся извне, см. solution()).

В простом варианте должны быть реализованы функции minWithOrNull и all, в сложном – дополнительно filter, map, joinToString.

Переданные компараторы, предикаты и функции могут работать долго. Можно считать, что число потоков невелико.

В этом задании нельзя использовать java.util.concurrent.*, kotlinx-coroutines и другие высокоуровневые инструменты для организации параллелизма. Цель – поработать с примитивами.