ScheduledExecutorService call shutdown for infinite scheduling












0















I am using a ScheduledExecutorService that would be scheduled to run every minute infinitely



Could some one tell me when to invoke the shutdown on the ScheduledExecutorService



I have already looked into Guava MoreExecutors. This does not work as I need to block the main thread to keep the other threads running continuously



Use case



I have a task that constantly monitors a system to check for latency/failures.



I need to run this task periodically and configure Cloudwatch alarms based on it. Ideally, I would want the task to continue executing even when there is a latency spike, because the alarm would have been triggered



So, I am using a ScheduledExecutorService to periodically schedule the tasks.



I want to know the ideal place where I would call shutdown() on the executor service










share|improve this question

























  • i will recommended to explain use case

    – Deadpool
    Nov 21 '18 at 22:41











  • @Deadpool I have updated the use case

    – user3451476
    Nov 24 '18 at 1:24
















0















I am using a ScheduledExecutorService that would be scheduled to run every minute infinitely



Could some one tell me when to invoke the shutdown on the ScheduledExecutorService



I have already looked into Guava MoreExecutors. This does not work as I need to block the main thread to keep the other threads running continuously



Use case



I have a task that constantly monitors a system to check for latency/failures.



I need to run this task periodically and configure Cloudwatch alarms based on it. Ideally, I would want the task to continue executing even when there is a latency spike, because the alarm would have been triggered



So, I am using a ScheduledExecutorService to periodically schedule the tasks.



I want to know the ideal place where I would call shutdown() on the executor service










share|improve this question

























  • i will recommended to explain use case

    – Deadpool
    Nov 21 '18 at 22:41











  • @Deadpool I have updated the use case

    – user3451476
    Nov 24 '18 at 1:24














0












0








0








I am using a ScheduledExecutorService that would be scheduled to run every minute infinitely



Could some one tell me when to invoke the shutdown on the ScheduledExecutorService



I have already looked into Guava MoreExecutors. This does not work as I need to block the main thread to keep the other threads running continuously



Use case



I have a task that constantly monitors a system to check for latency/failures.



I need to run this task periodically and configure Cloudwatch alarms based on it. Ideally, I would want the task to continue executing even when there is a latency spike, because the alarm would have been triggered



So, I am using a ScheduledExecutorService to periodically schedule the tasks.



I want to know the ideal place where I would call shutdown() on the executor service










share|improve this question
















I am using a ScheduledExecutorService that would be scheduled to run every minute infinitely



Could some one tell me when to invoke the shutdown on the ScheduledExecutorService



I have already looked into Guava MoreExecutors. This does not work as I need to block the main thread to keep the other threads running continuously



Use case



I have a task that constantly monitors a system to check for latency/failures.



I need to run this task periodically and configure Cloudwatch alarms based on it. Ideally, I would want the task to continue executing even when there is a latency spike, because the alarm would have been triggered



So, I am using a ScheduledExecutorService to periodically schedule the tasks.



I want to know the ideal place where I would call shutdown() on the executor service







java executorservice scheduledexecutorservice






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 24 '18 at 1:23







user3451476

















asked Nov 21 '18 at 6:04









user3451476user3451476

134212




134212













  • i will recommended to explain use case

    – Deadpool
    Nov 21 '18 at 22:41











  • @Deadpool I have updated the use case

    – user3451476
    Nov 24 '18 at 1:24



















  • i will recommended to explain use case

    – Deadpool
    Nov 21 '18 at 22:41











  • @Deadpool I have updated the use case

    – user3451476
    Nov 24 '18 at 1:24

















i will recommended to explain use case

– Deadpool
Nov 21 '18 at 22:41





i will recommended to explain use case

– Deadpool
Nov 21 '18 at 22:41













@Deadpool I have updated the use case

– user3451476
Nov 24 '18 at 1:24





@Deadpool I have updated the use case

– user3451476
Nov 24 '18 at 1:24












1 Answer
1






active

oldest

votes


















0














Currently, the factory methods in Executors return an instance of ScheduledThreadPoolExecutor1. By default, a ScheduledThreadPoolExecutor will not continue executing periodic tasks after it has been shutdown. You can configure this via setContinueExistingPeriodicTasksAfterShutdownPolicy.




Sets the policy on whether to continue executing existing periodic tasks even when this executor has been shutdown. In this case, executions will continue until shutdownNow or the policy is set to false when already shutdown. This value is by default false.




As it's really an implementation detail what implementation of ScheduledExecutorService the factory methods of Executors return, it's probably better to create a ScheduledThreadPoolExecutor directly.



ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
executor.setContinueExistingPeriodicTasksAfterShutdownPolicy(true);
executor.scheduleAtFixedRate(() -> System.out.println("Hello, World!"), 0L, 1L, TimeUnit.SECONDS);
executor.shutdown();


Note, this currently configures the ScheduledThreadPoolExecutor to use non-daemon threads. Even though shutdown was called, if the periodic tasks aren't cancelled they will keep the JVM alive. Use a custom ThreadFactory if you want to use daemon threads.





1. The newSingleThreadScheduledExecutor methods return a non-configurable wrapper that delegates to a ScheduledThreadPoolExecutor.






share|improve this answer

























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53406113%2fscheduledexecutorservice-call-shutdown-for-infinite-scheduling%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Currently, the factory methods in Executors return an instance of ScheduledThreadPoolExecutor1. By default, a ScheduledThreadPoolExecutor will not continue executing periodic tasks after it has been shutdown. You can configure this via setContinueExistingPeriodicTasksAfterShutdownPolicy.




    Sets the policy on whether to continue executing existing periodic tasks even when this executor has been shutdown. In this case, executions will continue until shutdownNow or the policy is set to false when already shutdown. This value is by default false.




    As it's really an implementation detail what implementation of ScheduledExecutorService the factory methods of Executors return, it's probably better to create a ScheduledThreadPoolExecutor directly.



    ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
    executor.setContinueExistingPeriodicTasksAfterShutdownPolicy(true);
    executor.scheduleAtFixedRate(() -> System.out.println("Hello, World!"), 0L, 1L, TimeUnit.SECONDS);
    executor.shutdown();


    Note, this currently configures the ScheduledThreadPoolExecutor to use non-daemon threads. Even though shutdown was called, if the periodic tasks aren't cancelled they will keep the JVM alive. Use a custom ThreadFactory if you want to use daemon threads.





    1. The newSingleThreadScheduledExecutor methods return a non-configurable wrapper that delegates to a ScheduledThreadPoolExecutor.






    share|improve this answer






























      0














      Currently, the factory methods in Executors return an instance of ScheduledThreadPoolExecutor1. By default, a ScheduledThreadPoolExecutor will not continue executing periodic tasks after it has been shutdown. You can configure this via setContinueExistingPeriodicTasksAfterShutdownPolicy.




      Sets the policy on whether to continue executing existing periodic tasks even when this executor has been shutdown. In this case, executions will continue until shutdownNow or the policy is set to false when already shutdown. This value is by default false.




      As it's really an implementation detail what implementation of ScheduledExecutorService the factory methods of Executors return, it's probably better to create a ScheduledThreadPoolExecutor directly.



      ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
      executor.setContinueExistingPeriodicTasksAfterShutdownPolicy(true);
      executor.scheduleAtFixedRate(() -> System.out.println("Hello, World!"), 0L, 1L, TimeUnit.SECONDS);
      executor.shutdown();


      Note, this currently configures the ScheduledThreadPoolExecutor to use non-daemon threads. Even though shutdown was called, if the periodic tasks aren't cancelled they will keep the JVM alive. Use a custom ThreadFactory if you want to use daemon threads.





      1. The newSingleThreadScheduledExecutor methods return a non-configurable wrapper that delegates to a ScheduledThreadPoolExecutor.






      share|improve this answer




























        0












        0








        0







        Currently, the factory methods in Executors return an instance of ScheduledThreadPoolExecutor1. By default, a ScheduledThreadPoolExecutor will not continue executing periodic tasks after it has been shutdown. You can configure this via setContinueExistingPeriodicTasksAfterShutdownPolicy.




        Sets the policy on whether to continue executing existing periodic tasks even when this executor has been shutdown. In this case, executions will continue until shutdownNow or the policy is set to false when already shutdown. This value is by default false.




        As it's really an implementation detail what implementation of ScheduledExecutorService the factory methods of Executors return, it's probably better to create a ScheduledThreadPoolExecutor directly.



        ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
        executor.setContinueExistingPeriodicTasksAfterShutdownPolicy(true);
        executor.scheduleAtFixedRate(() -> System.out.println("Hello, World!"), 0L, 1L, TimeUnit.SECONDS);
        executor.shutdown();


        Note, this currently configures the ScheduledThreadPoolExecutor to use non-daemon threads. Even though shutdown was called, if the periodic tasks aren't cancelled they will keep the JVM alive. Use a custom ThreadFactory if you want to use daemon threads.





        1. The newSingleThreadScheduledExecutor methods return a non-configurable wrapper that delegates to a ScheduledThreadPoolExecutor.






        share|improve this answer















        Currently, the factory methods in Executors return an instance of ScheduledThreadPoolExecutor1. By default, a ScheduledThreadPoolExecutor will not continue executing periodic tasks after it has been shutdown. You can configure this via setContinueExistingPeriodicTasksAfterShutdownPolicy.




        Sets the policy on whether to continue executing existing periodic tasks even when this executor has been shutdown. In this case, executions will continue until shutdownNow or the policy is set to false when already shutdown. This value is by default false.




        As it's really an implementation detail what implementation of ScheduledExecutorService the factory methods of Executors return, it's probably better to create a ScheduledThreadPoolExecutor directly.



        ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
        executor.setContinueExistingPeriodicTasksAfterShutdownPolicy(true);
        executor.scheduleAtFixedRate(() -> System.out.println("Hello, World!"), 0L, 1L, TimeUnit.SECONDS);
        executor.shutdown();


        Note, this currently configures the ScheduledThreadPoolExecutor to use non-daemon threads. Even though shutdown was called, if the periodic tasks aren't cancelled they will keep the JVM alive. Use a custom ThreadFactory if you want to use daemon threads.





        1. The newSingleThreadScheduledExecutor methods return a non-configurable wrapper that delegates to a ScheduledThreadPoolExecutor.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 21 '18 at 21:52

























        answered Nov 21 '18 at 21:44









        SlawSlaw

        7,94831033




        7,94831033






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53406113%2fscheduledexecutorservice-call-shutdown-for-infinite-scheduling%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            android studio warns about leanback feature tag usage required on manifest while using Unity exported app?

            SQL update select statement

            'app-layout' is not a known element: how to share Component with different Modules