Я бы сделал примерно так, если надо проверять раз в N времени.
public class Main {
private static int period = 60; //Default period
private static final TimeUnit PERIOD_TIME_UNIT = TimeUnit.MINUTES;
public static void main(String[] args) {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
System.out.println(String.format("Worker work period %d %s", period, PERIOD_TIME_UNIT));
scheduledExecutorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
//код который должен запускатся по таймеру
}
}, 0, period, TimeUnit.MINUTES);
}
}
Ну а если это часть логики приложения, то использовал бы простой
ThreadPoolExecutor
собственно для этого у меня есть само писанный наподобие андроидовского
AsyncTask класс с callback'ами
onPostExecute
onPreExecute
doInBackground
, которому отдаёшь
Runnable
он их выполняет.