Se si desidera usare semplicemente Timer, lo farei fai qualcosa del genere:
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
}
}
Siamo spiacenti per l'identificazione pessima.
Inoltre, se avete bisogno di pianificare l'esecuzione di codice, dare un'occhiata a Guava Services dal momento che può davvero rendere il codice molto più chiara e astratto di un bel po 'di testo standard di creare discussioni, la programmazione, ecc
By A proposito, non mi sono preso la briga di generare un numero casuale, ecc., ma penso che tu possa capire come includere quella parte. Spero che questo sia sufficiente per portarti sulla buona strada.
Per la cronaca, se si sceglie di usare Guava, che sarebbe simile a questa:
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);
}
};
}
}
E si sarebbe semplicemente creare un principale che chiama nuova CrawlingService.start(); questo è tutto.
Non farlo con il timer. Utilizzare qualcosa da java.util.concurrent. È più facile da capire, più performante e più robusto. L'esempio di SimonC di seguito è un modo decente per farlo. – kittylyst