- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 guava 定期执行一些任务 AbstractScheduledService :
public class MyService extends AbstractScheduledService {
public MyService() {
}
@Override
protected void runOneIteration() {
doStuff();
}
private void doStuff() {
// Do stuff
}
@Override
protected Scheduler scheduler() {
return Scheduler.newFixedRateSchedule(0, 8, TimeUnit.HOURS);
}
}
所以这个服务应该每 8 小时定期执行一些任务,但实际上它从来没有这样做过。继承的 isRunning()
方法返回 false 并且永远不会调用 runOneIteration()
方法。
我已经设法通过从我的服务构造函数调用 startAsync()
方法(继承自父类)使其工作,但我没有看到任何引用资料表明这是它应该工作的方式.
我在这里错过了什么吗?这就是 AbstractScheduledService
的工作方式吗?
最佳答案
AbstractScheduledServiced
实现 Service . Service 接口(interface)描述生命周期方法,包括 startAsync
。 ServiceState枚举文字包含有关它们含义的文档。 NEW
状态的服务(刚刚创建):
A service in this state is inactive. It does minimal work and consumes minimal resources.
要让服务做一些有用的事情,您必须将其转换为状态 RUNNING
A service in this state is operational.
这就是为什么您必须在服务执行任何操作之前启动该服务。
我还建议不要从构造函数调用 startAsync,而是从创建 MyService
实例的代码中调用它。在构造函数中产生如此严重的副作用(创建线程)是很少见的事情。
关于java - 使用 guava AbstractScheduledService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25499811/
我正在尝试扩展AbstractScheduledService.Scheduler,以便我可以使用在实例变量中存储初始延迟和周期的计划。 我正在尝试以下操作 public class ScannerS
当应用程序服务器关闭时,关闭在服务器环境(例如 Tomcat)中运行的 AbstractScheduledService 的首选方法是什么?我是否必须为此显式注册一个服务器监听器,或者有没有办法将服务
我正在使用一些继承自 AbstractScheduledService 的服务,这些服务由 ServiceManager 管理。一切正常,但现在,有一个服务的 runOneIteration 需要相当
我正在尝试使用 guava 定期执行一些任务 AbstractScheduledService : public class MyService extends AbstractScheduledSe
我正在使用带有调度程序的 AbstractScheduledService。一个简单的模式,如: class MyService extends AbstractScheduledService {
我是一名优秀的程序员,十分优秀!