Вопрос в том, могут ли задачи, которые вы выполняете с вашим кодом, выполняться одновременно или нет. Если ваш код был написан как последовательный, то сначала вам нужно определить, какие задачи могут выполняться одновременно, каковы взаимозависимости между этими задачами, нужно ли им взаимодействовать или они независимы. Если они должны взаимодействовать, вам понадобятся общие объекты, блокировки и т. Д. Вам нужно решить, следует ли вам использовать пулы потоков или создавать свои собственные потоки каждый раз для каждой новой задачи. Большинство из них будут очень специфичными для вашей ситуации, поэтому не может быть общего ответа. После того, как вы разобрались со всем этим, ознакомьтесь с документацией по параллелизму Java о том, как это реализовать.