Si desea simplemente utilice el temporizador, lo haría haz algo como esto:
public class TestClass {
public long myLong = 1234;
public static void main(String[] args) {
final TestClass test = new TestClass();
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
test.doStuff();
}
}, 0, test.myLong);
}
public void doStuff(){
//do stuff here
}
}
Perdón por la pésima identación.
Además, si necesita programar la ejecución de código, echar un vistazo a Guava Services ya que realmente puede hacer que el código mucho más claro y abstracto un poco de la plancha de caldera de crear hilos, programación, etc.
Por Por cierto, no me tomé la molestia de generar un número aleatorio, etc., pero creo que puedes averiguar cómo incluir esa parte. Espero que esto sea suficiente para llevarte por el camino correcto.
Para el registro, si se fuera a utilizar guayaba, se vería algo como esto:
class CrawlingService extends AbstractScheduledService {
@Override
protected void runOneIteration() throws Exception {
//run this alot
}
@Override
protected void startUp() throws Exception {
//anything you need to step up
}
@Override
protected void shutDown() throws Exception {
//anything you need to tear down
}
@Override
protected Scheduler scheduler() {
return new CustomScheduler() {
@Override
protected Schedule getNextSchedule() throws Exception {
long a = 1000; //number you can randomize to your heart's content
return new Schedule(a, TimeUnit.MILLISECONDS);
}
};
}
}
Y sólo tendría que crear una nueva principal que llama CrawlingService.start(); Eso es.
No haga esto con el temporizador. Usa algo de java.util.concurrent. Es más fácil de entender, más eficiente y más robusto. El siguiente ejemplo de SimonC es una forma decente de hacerlo. – kittylyst