Tempo na execução de um método

Boa tarde Pessoal,

Gostaria de saber se tem como eu definir um tempo na execução de um método, em caso que ele demore por muito tempo…

try {  
       Thread.sleep(5000);  
                  
       String retSi = new ConsultaDBI().consultaOnLine(1, "123456789", "ES", "", "", "");  
                  
       System.out.println(retSi);  
                  
} catch (Exception e) {  
      e.printStackTrace();  
}  

Se alguem souber.
Att,

http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html#get(long,%20java.util.concurrent.TimeUnit)
http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html#cancel(boolean)

A idéia é você criar um Future com essa consulta, e usar o método get para recuperar seu resultado. Esse método get tem um timeout.
Se você vir que o get retornou null, verifique se já foi cancelada (com isCancelled), senão você força o cancelamento (com cancel (true)).