В этом случае вы можете использовать ScheduledExecutorService .Это ExecutorService, который может планировать команды для запуска после заданной задержки или для периодического выполнения.
Расписание ScheduledFuture (вызываемый, длительная задержка, единица времени)
Создает и выполняетScheduledFuture, которое становится активным после заданной задержки.
callable - функция для выполнения
delay - время с настоящего времени до задержки выполнения
unit - единица времени задержки
ScheduledExecutorService service = null;
service = Executors.newScheduledThreadPool(1);
service.schedule(() -> {
myMethodNameWhichIWantToExecute();
}, 2, TimeUnit.MINUTES);
if (service != null) service.shutdown();