Z toho navratova hodnota ani nepojde. Je to totiz void. Ani to nema zmysel. Zober si tvoja aplikacia bezi, vygeneruje vlakno v ktorom bezi vypocet a pocas toho aj tvoja aplikacia. Na to aby si vedel zasa ziskat navratovu hodnotu. Tak sa vlakna musi pockat. Cize jedno z nich musis pozastavit. Na taketo veci sluzi interface Callable<T> . Kotry ti ako navratovu hodnotu poskytne Future<T>. Z ktoreho ziskas hodnotu metodou get(). Ta magicka metoda ti pozastavy vlakno do vtedy pokial nebude mat druhe vlakno vysledok, alebo nebude interuptnute. Ale neviem ci sa to da pouzit v Timery. Takze nie je. Ale da sa to urobit nejako takto:
SheduledExecutorService timer = Executors.newSingleThreadScheduledExecutor();
SheduledFuture<T> future = timer.<T> shedule(new Callable<T>(){
public T call(){
return // nieco v T;
}
}, 10L, TimeUnit.SECONDS);
// Dalsi kod
// A tu si pockas na vysledok future
T vysledok = future.get();
Na tvojom mieste by som volil, aby animacia bezala v inom threade a pocitalo sa v maine. Tak sa dokazes vyhnut nepriemnostiam.