Puoi creare un thread dove c'è la tua funzione, farla partire e poi dopo trenta secondi stopparla.

es.
Thread prog = new Thread(new Programma());
prog.start();
Thread.sleep(30000);
prog.stop();


class Programma implements Runnable{
Programma() {
}

public void run() {
funzione();
}