use*_*180 14 java scheduled-tasks dropwizard
在我的情况下,我需要运行一些计划任务(例如每分钟)在DB中进行一些检查,如果需要,还需要一些子任务.这应该是没有DB健康检查!
DW文档说:
"应该注意,Environment有针对ExecutorService和ScheduledExecutorService实例的内置工厂方法.有关详细信息,请参阅LifecycleEnvironment#executorService和LifecycleEnvironment#scheduledExecutorService."
有谁知道如何在DW中实现这一点?试着玩DW代码的可能性,我发现了这个:
String nameFormat = "?What should this string contain?";
ScheduledExecutorServiceBuilder sesBuilder = environment.lifecycle().scheduledExecutorService(nameFormat);
ScheduledExecutorService ses = sesBuilder.build();
Runnable alarmTask = new AlarmTask();
ses.scheduleWithFixedDelay(alarmTask, 0, 5, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)
这是DW中正确的方法吗?BTW一个可运行的假人:
private static final class AlarmTask implements Runnable {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
@Override public void run() {
++fCount;
cal = Calendar.getInstance();
System.out.println(fCount + "x BEEP:" + dateFormat.format(cal.getTime()));
}
private int fCount;
}
Run Code Online (Sandbox Code Playgroud)
什么是初始名称的目的,是否在某处使用?希望有人能提供帮助.
小智 9
我在Dropwizard应用程序中做同样的事情来定期运行作业.有一些项目,如dropwizard-jobs和dropwizard-quartz,但这似乎可以满足我的简单需求.
ScheduledExecutorServiceBuilder将nameFormat传递给ThreadFactoryBuilder,作为命名线程的模式.该文档可能对您有所帮助:http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/util/concurrent/ThreadFactoryBuilder.html#setNameFormat(java.lang.String)
| 归档时间: |
|
| 查看次数: |
6803 次 |
| 最近记录: |