ASyncTask на сколько я знаю ставит выполнение задач в очередь, так что для слишком длинных задан ASyncTask не подходит. Хотя есть метод запустить задачи параллельно, но я бы ни стал его использовать вообще.
Утечки памяти конкретно вызывает не Thread и ASyncTask, а не правильная работа с объектами. К тому же можно использовать слабые ссылки weakreference - что позволит удалить объект из памяти не учитывая эту ссылку.
Если выбирать из Thread и ASyncTask - то я склоняюсь к Thread.
rxJava - это всего лишь библиотека, к тому-же при не правильной работе с ссылками (объектами) так-же возможна утечка памяти.
P.S я такой-же новичок как и ты, могу ошибаться