Либо в виде выделяем общее среди этих типов
Как это на примере реальном?
Пока в голову приходит только одно — есть куча классов, имеющих общее; в принципе, их можно под какой-то тип вынести. Следовательно, можно сделать интерфейс/абстрактный класс.
Потом на уровне класса писать, что класс принимает все аргументы, являющиеся имплементацией интерфейса/абстракции определенной, грубо говоря. Возможно я ошибаюсь, рад буду если объяснишь, т.к с многопоточностью ты помог понять получше