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();
}