、私はでしょう次のようなことをしてください:
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 Servicesを見てみましょうところで、私は乱数などの生成の手間をかけることはありませんでしたが、あなたはその部分をどのように含めるかを理解できると思います。私はこれが正しい軌道上であなたを得るのに十分であることを願っています。レコードの
あなたはグアバを使用した場合、それはこのようなものになります。)
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);
}
};
}
}
をそして、あなたは、単に新しいCrawlingService.start(と呼ばれるそのメインを作成します。それでおしまい。
タイマーでこれをしないでください。 java.util.concurrentのものを使用してください。理解しやすく、パフォーマンスが高く、より堅牢です。下のSimonCの例は、それを行う上でのまともな方法です。 – kittylyst