![](/img/trans.png)
[英]How to use Timer to restart record video for every preset interval time?
[英]javafx: How to set ScheduledService to restart itself on a random time interval?
我有一個ScheduledService,通過設置setPeriod(Duration.seconds((int) 1 + Math.rand()*100))
在隨機時間(從1到101秒)重新啟動。 如果隨機數為65,則服務系統每65秒重新啟動一次。
但是,我真正想要的是它將在每個周期的隨機(非固定)時間重新啟動。
更新:隨機,我的意思是它將為每次運行生成一個隨機數。 所以,也許服務將在接下來的10秒再次重啟,下一次100秒,下一次35秒。
我怎樣才能做到這一點?
class Foo
private final ScheduledService<Item> service = new ScheduledService<Item>() {
@Override
public Task<Item> createTask(){
return new Task<Item>() {
@Override
public Item call() throws Exception {
return //Item object
}
};
}
};
// constructor
public Foo(){
service.setPeriod(Duration.seconds((int) 1 + Math.rand()*100));
....
service.startMonitoring();
}
public final void startMonitoring() {
service.restart();
}
public final void stopMonitoring() {
service.cancel();
}
}
您可以在完成當前運行的服務時更改它。
來自Docs:
如果在ScheduledService運行時更改了句點或延遲,則在下一次迭代時將考慮新值。
service.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
@Override
public void handle(WorkerStateEvent t) {
service.setPeriod(Duration.seconds(1 + Math.random()*100));
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.