Зачем вообще использовать ThreadGroup? Вам это действительно нужно? Возможно, все, что вам действительно нужно, это ExecutorService , в который вы можете отправить свои исполняемые и вызываемые объекты.
Будучи новичком, вы также можете взглянуть на Callable . Это почти как поток, за исключением того, что Callable возвращает значение. Когда вы отправляете вызываемый объект, вы возвращаете объект Future , который походит на обещание получить значение из вызываемого объекта.