هل هناك تنفيذ مثل كرون من ScheduledExecutorService في جافا؟

StackOverflow https://stackoverflow.com/questions/469884

  •  19-08-2019
  •  | 
  •  

سؤال

ووScheduledExecutorService في جاوة هو سهل جدا لتكرار المهام مع أي فترات زمنية محددة أو تأخير الثابتة. كنت أتساءل إذا كان هناك شيء من هذا القبيل ScheduledExecutorService القائمة التي تمكنك من تحديد وقت من اليوم لجدولة المهمة في، بدلا من فاصل أي "أريد هذه المهمة لاطلاق النار في 10:00 كل يوم".

وأنا أعلم أنك يمكن تحقيق ذلك مع الكوارتز، لكنني أفضل عدم استخدام هذه المكتبة إذا أمكن (انها مكتبة كبيرة ولكن أنا أفضل أن يكن لديك التبعية لعدة أسباب).

نصائح أخرى

وThreadPoolTaskScheduler، ويمكن استخدامها كلما إدارة موضوع خارجية ليست شرطا. داخليا، فإنه المندوبين إلى <ط> ScheduledExecutorService المثال. <ط> ThreadPoolTaskScheduler تنفذ الربيع <ط> TaskExecutor واجهة جدا، بحيث يمكن استخدام نسخة واحدة للتنفيذ غير متزامن وكذلك كما كان مقررا، ويحتمل أن تكون متكررة، وعمليات الإعدام.

وحيث كما CronTrigger () يأخذ في cronExpression <لأ href = "http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html" يختلط = "نوفولو noreferrer"> http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html

لمزيد من المعلومات حول هذا الحل تشير مستندات الربيع: <لأ href = "https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html" يختلط = "نوفولو noreferrer "> https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html

import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.CronTrigger;
import java.util.Date;

public class CronTriggerSpringTest{
public static void main(String args[]){
    String cronExpression = "0/5 * * * * *";
    ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
    scheduler.initialize();
    scheduler.schedule(new Runnable() {
        @Override
        public void run() {
            System.out.println("Hello Date:"+new Date());
        }
    }, new CronTrigger(cronExpression));
}
}

عند استخدام scheduleAtFixedRate التي تقدمها تأخير. لذا فإن تأخير يمكن أن يكون الفرق إلى 10 صباحا والفترة هو 24 ساعة. وهذا يمكن أن ينجرف قليلا، حتى مع جهاز توقيت لذلك ما يمكنك القيام به هو جدولة مهمة التي تضيف نفسها إلى ScheduledExecutorService مع تأخير المناسب في كل مرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top