Если вы хотите просто использовать таймер, я бы сделал что-то вроде этого:
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
}
}
Извините за паршивую подделку.
Кроме того, если вам нужно запланировать выполнение кода, взгляните на Службы Guava , так как это действительно может сделать ваш код намного более четким и абстрагировать немало шаблонной схемы создания потоков, планирования и т. Д. .
Кстати, я не взялся за генерацию случайных чисел и т. Д., Но я думаю, что вы можете выяснить, как включить эту часть. Надеюсь, этого достаточно, чтобы вы встали на правильный путь.
Для справки, если бы вы использовали Guava, это выглядело бы примерно так:
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);
}
};
}
}
И вы просто создадите main, который называется new CrawlingService.start (); это все.