Nếu bạn muốn chỉ đơn giản là sử dụng Timer, tôi sẽ làm một cái gì đó như thế này:
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
}
}
Xin lỗi vì nhận dạng tệ hại.
Ngoài ra, nếu bạn cần phải lên kế hoạch thực hiện các mã, hãy nhìn vào Guava Services vì nó thực sự có thể làm cho mã của bạn rõ ràng hơn nhiều và trừu tượng khá nhiều bản mẫu của việc tạo ra chủ đề, lịch, vv
Bằng theo cách này, tôi đã không gặp rắc rối khi tạo ra số ngẫu nhiên, v.v., nhưng tôi nghĩ bạn có thể tìm ra cách bao gồm phần đó. Tôi hy vọng điều này là đủ để giúp bạn đi đúng hướng.
Đối với hồ sơ, nếu bạn đã sử dụng ổi, nó sẽ giống như thế này:
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);
}
};
}
}
Và bạn chỉ đơn giản là sẽ tạo ra một chính mà gọi CrawlingService.start mới(); đó là nó.
Không làm điều này với Bộ hẹn giờ. Sử dụng một cái gì đó từ java.util.concurrent. Nó dễ hiểu hơn, hiệu quả hơn và mạnh mẽ hơn. Ví dụ của SimonC dưới đây là một cách tốt để làm điều đó. – kittylyst