Я думаю, что это действительно вопрос моделирования предметной области.
Не было бы ничего плохого в том, что вы делаете, если вы хотите расширить / улучшить поведение потока - например, добавить отладку или вывод производительности, но я не думаю, что вы этого хотите.
Возможно, вы хотите смоделировать концепцию в вашем домене с помощью активных объектов. В этом случае стандартный подход Ruby лучше, потому что он позволяет вам достичь этого без изменения модели вашего домена.
Наследование действительно должно использоваться только для моделирования отношений IS_A. Стандартный рубиновый код для этого аккуратно завершает решение.
Чтобы сделать ваш объект активным, сделайте так, чтобы он захватывал вновь созданный поток некоторым методом
Class MyClass
...
def run
while work_to_be_done do
some_work
end
end
...
end
threads = []
# start creating active objects by creating an object and assigning
# a thread to each
threads << Thread.new { MyClass.new.run }
threads << Thread.new { MyOtherClass.new.run }
... do more stuff
# now we're done just wait for all objects to finish ....
threads.each { |t| t.join }
# ok, everyone is done, see starships on fire off the shoulder of etc
# time to die ...