Вы можете использовать потоки, поток - это то, что выполняется независимо от вашей программы, так что вы можете создать поток, который будет жить своей жизнью и каждые 30 минут будет просыпаться и делать то, что вы хотите, чтобы он делал.
Вот небольшое объяснение темы в java