Tag: scheduled tasks

java调度以伪’固定’速率调用(例如钟形曲线分布)

目前我有一个ScheduledThreadPoolExecutor,它可以以固定的速率执行callable。 scheduledThreadPoolExecutor.scheduleAtFixedRate(callable, delay, waitNano, TimeUnit.NANOSECONDS); 我的团队想在waitNano中添加一些randomess。 目前它是1000.但我们希望等待秒数为900,1100,800,1200。 平均等待时间仍然是1000,但等待秒是随机分布的(例如像Bell曲线)。 我想知道这个function已经在java了吗? 如果我必须编写自己的“调度程序”,这种行为具有随机等待行为,那么你们有什么建议呢? 非常感谢! 厄尔本

Objectify和TimerTask:没有为此线程注册API环境

我正在尝试设置TimerTask以定期从Google App Engine的dataStore中删除条目。 所以我用Timer设置了一个ServletContextListener 。 在contextInitialized ,我已经注册了我的Objectify类: ObjectifyService.register(Person.class); 但是,当任务实际运行时,它会抱怨没有设置API环境: Exception in thread “Timer-0” java.lang.NullPointerException: No API environment is registered for this thread. at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId(DatastoreApiHelper.java:80) at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppIdNamespace(DatastoreApiHelper.java:90) at com.google.appengine.api.datastore.Query.(Query.java:214) at com.google.appengine.api.datastore.Query.(Query.java:143) at com.googlecode.objectify.impl.cmd.QueryImpl.(QueryImpl.java:72) at com.googlecode.objectify.impl.cmd.LoadTypeImpl.createQuery(LoadTypeImpl.java:50) at com.googlecode.objectify.impl.cmd.LoadTypeImpl.filter(LoadTypeImpl.java:58) at myApp.MyServletContextListener$MyTask.run(MyServletContextListener.java:58) at java.util.TimerThread.mainLoop(Timer.java:555) at java.util.TimerThread.run(Timer.java:505) 有任何想法吗? 我已经尝试将注册该类的行更改为ObjectifyService.factory().register(Person.class); 但它似乎没有帮助。

拥有单个线程池比多个线程池更好的设计

在Java中拥有多个线程池有什么优缺点? 我已经看到代码中有多个线程池用于不同的“类型”任务,我不确定它是更好的设计还是只是开发人员是懒惰的。 一个示例是将ScheduledThreadPoolExecutor用于定期执行或超时的任务,并使用另一个ThreadPoolExecutor执行其他任务。

从Spring 3迁移到Spring 4 – org.springframework.scheduling.quartz.CronTriggerBean

我正试图从春季3.0.5迁移到4.1.X春季。 Spring 3的Class命名为“org.springframework.scheduling.quartz.CronTriggerBean” 但是Spring 4不包含这个类名。 [5/28/15 20:10:16:798 EDT] 00000092 ClassPathXmlA W org.springframework.context.support.AbstractApplicationContext __refresh在上下文初始化期间遇到exception – 取消刷新尝试org.springframework.beans.factory.CannotLoadBeanClassException:找不到类[org.springframework.scheduling.quartz.CronTriggerBean]用于在类路径资源[config / spring / WxsCacheContext.xml]中定义的名称为’beanIdName’的bean; 嵌套exception是org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1328)中的java.lang.ClassNotFoundException:org.springframework.scheduling.quartz.CronTriggerBean 我尝试了类似“弹簧支持”的替代方案,它具有相同的类别。 但没有运气。 得到那个jar子之后,它给出了关于石英的错误 [5/28/15 15:37:02:665 EDT] 0000006e SystemOut O ERROR(?:?) – java.lang.Exception:SpringUtils.getSpringBean(hostnameVerifierSetter)中的Bean错误消息:无法初始化组定义。 组资源名[classpath *:beanRefFactory.xml],工厂密钥[beanContext]; 嵌套exception是org.springframework.beans.factory.BeanCreationException:在URL [file:/ C:/ Program%20Files%20(x86)/ IBM / WebSphere / AppServer / profiles / AppSrv01 /中定义的名称为’beanContext’的bean创建时出错installedApps / cellName / Project.ear / configurations / […]

Spring / Java中的调度任务

我正在产生一个线程,它将继续从数据库中提取大量记录并将它们放入队列中。 该线程将在服务器负载上启动。 我希望这个线程始终处于活动状态。 如果数据库中没有记录,我希望它等待一段时间后再次检查。 我正在考虑使用spring任务调度程序来安排这个,但不确定这是否正确,因为我只希望我的任务启动一次。 在Spring中实现这个的好方法是什么? 此外,我需要进行边界检查,如果我的线程发生故障(由于任何错误或exception情况),它应该在一段时间后重新实例化。 我可以通过使用线程通信方法在java中完成所有这些,但只是尝试在Spring或Java中有可用于此类场景的东西。 任何建议或指针都会有所帮助。

使用@Scheduled和@EnableScheduling但给出NoSuchBeanDefinitionException

我已经在线跟踪非常简单的示例在Spring中设置了一个cron作业但我每次都在我的Tomcat启动日志中不断收到此错误: 2015-05-25 00:32:58 DEBUG ScheduledAnnotationBeanPostProcessor:191 – Could not find default TaskScheduler bean org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.scheduling.TaskScheduler] is defined 2015-05-25 00:32:58 DEBUG ScheduledAnnotationBeanPostProcessor:202 – Could not find default ScheduledExecutorService bean org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.scheduling.TaskScheduler] is defined 用于实现cron的2个java类: 1)@Configuration类: @Configuration @EnableScheduling public class ClearTokenStoreCronEnable { final static Logger log = LoggerFactory.getLogger(ClearTokenStoreCronEnable.class); […]

如何从XML Spring调度配置转向注释/代码配置?

我试图将以下Spring任务xml配置转换为纯粹基于代码/注释的版本: 根据Spring规范28.4.1( http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html ),他们说要像这样从XML转发: 代码配置就像启用@EnableScheduling和/或@EnableAsync一样简单。 但是,我没有看到任何可以实际实例化调度程序的地方。 @EnableScheduling的javadoc( http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/annotation/EnableScheduling.html )展示了如何插入我自己创建的Executor,虽然我不确定它应该是什么类(我仍然希望能够控制池大小,队列容量和拒绝策略)。 它还显示了如何使用configureTasks覆盖来调度我的createPartitions方法。 但是,我希望能够命名我的调度程序(因此我可以识别其线程)并控制其池大小。 所以,我想知道这些事情: 1)我可以使用哪个类来设置XML具有的执行器字段? 2)有没有办法创建一个我可以控制名称和池大小的调度程序实例?

如何安排任务运行一次?

我想延迟做一些事情,就像设置倒计时器一样,在一段时间后“做一件事”。 我希望程序的其余部分在我等待时继续运行,所以我尝试制作自己的Thread ,其中包含一分钟的延迟: public class Scratch { private static boolean outOfTime = false; public static void main(String[] args) { Thread countdown = new Thread() { @Override public void run() { try { // wait a while System.out.println(“Starting one-minute countdown now…”); Thread.sleep(60 * 1000); // do the thing outOfTime = true; System.out.println(“Out of time!”); } catch […]

使用java.util.timer与Quartz进行调度的优缺点?

我必须编写一个执行一系列任务的应用程序: 任务每天0200时运行一次。 任务将在凌晨4点运行一次 从0003小时开始以15分钟的间隔运行任务 从0005时开始以15分钟的间隔运行任务 使用普通java.util.timer Vs有什么优缺点。 石英这个? 我还应该考虑其他替代方案吗?

通过java在特定日期发送自动邮件

我正在使用Java mail API通过我的java应用程序发送电子邮件。 但是我想在未来的日期自动发送它,即每个月/每年的任何具体日期。 我已经使用我的ISP的SMTP服务器发送上述id的电子邮件。我在网上引用了以下可用示例。 如何在这里设置任何具体的日期。我已经尝试过SimpleDateFormat并在此处设置它但它仍然立即发送邮件,但是按照提到的具体日期设置其发送日期。 有没有其他方法可以在上述日期和时间发送自动电子邮件? import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; // Send a simple, single part, text/plain e-mail public class TestEmail { public static void main(String[] args) { // SUBSTITUTE YOUR EMAIL ADDRESSES HERE!!! String to = “abc@abc.com”; String from = “abc@abc.com”; // SUBSTITUTE YOUR ISP’S MAIL SERVER HERE!!! String […]