Lifecycle (starting, shutting down) of a ScheduledExecutorService inside a Spring Signleton










0














I'm using a ScheduledExecutorService inside a Spring Singleton. It executes a periodical check that's scheduled to run every x minutes. I'm lazily (or half-lazily) initializing the Singleton member variables (the Executor) by implementing a ApplicationListener<ContextStartedEvent>#onApplicationEventmethod - that created the ScheduledExecutorService and assigns a task.



I need to deal with the shutdown of the ExecutorService, and wonder how to do that properly. I do know that Spring has it's context shutdown process, and wonder whether it's reasonable to call the shutdown somewhere from there.



What exactly happens if the ExecutorService doesn't get shutdown, and the Server is being closed or terminated? Doesn't the JVM just clears all memory related to this program?



Thanks










share|improve this question

















  • 1




    docs.spring.io/spring/docs/current/spring-framework-reference/…
    – JB Nizet
    Nov 11 at 16:59










  • Thanks. I've implemented a "shutdown"/"destroy" method according to the documentation. I still can't figure out on which scenario Spring performs such a shutdown process. If I'm just stopping the web server, the method doesn't get called.
    – Ido Gal
    Nov 12 at 6:40










  • Why are you doing the scheduling yourself instead of using @EnableScheduling with an @Scheduled annotation. This way Spring will manage the executor for you. Also how are you shutting down the server, nicely or by doing a kill?
    – M. Deinum
    Nov 12 at 7:26
















0














I'm using a ScheduledExecutorService inside a Spring Singleton. It executes a periodical check that's scheduled to run every x minutes. I'm lazily (or half-lazily) initializing the Singleton member variables (the Executor) by implementing a ApplicationListener<ContextStartedEvent>#onApplicationEventmethod - that created the ScheduledExecutorService and assigns a task.



I need to deal with the shutdown of the ExecutorService, and wonder how to do that properly. I do know that Spring has it's context shutdown process, and wonder whether it's reasonable to call the shutdown somewhere from there.



What exactly happens if the ExecutorService doesn't get shutdown, and the Server is being closed or terminated? Doesn't the JVM just clears all memory related to this program?



Thanks










share|improve this question

















  • 1




    docs.spring.io/spring/docs/current/spring-framework-reference/…
    – JB Nizet
    Nov 11 at 16:59










  • Thanks. I've implemented a "shutdown"/"destroy" method according to the documentation. I still can't figure out on which scenario Spring performs such a shutdown process. If I'm just stopping the web server, the method doesn't get called.
    – Ido Gal
    Nov 12 at 6:40










  • Why are you doing the scheduling yourself instead of using @EnableScheduling with an @Scheduled annotation. This way Spring will manage the executor for you. Also how are you shutting down the server, nicely or by doing a kill?
    – M. Deinum
    Nov 12 at 7:26














0












0








0







I'm using a ScheduledExecutorService inside a Spring Singleton. It executes a periodical check that's scheduled to run every x minutes. I'm lazily (or half-lazily) initializing the Singleton member variables (the Executor) by implementing a ApplicationListener<ContextStartedEvent>#onApplicationEventmethod - that created the ScheduledExecutorService and assigns a task.



I need to deal with the shutdown of the ExecutorService, and wonder how to do that properly. I do know that Spring has it's context shutdown process, and wonder whether it's reasonable to call the shutdown somewhere from there.



What exactly happens if the ExecutorService doesn't get shutdown, and the Server is being closed or terminated? Doesn't the JVM just clears all memory related to this program?



Thanks










share|improve this question













I'm using a ScheduledExecutorService inside a Spring Singleton. It executes a periodical check that's scheduled to run every x minutes. I'm lazily (or half-lazily) initializing the Singleton member variables (the Executor) by implementing a ApplicationListener<ContextStartedEvent>#onApplicationEventmethod - that created the ScheduledExecutorService and assigns a task.



I need to deal with the shutdown of the ExecutorService, and wonder how to do that properly. I do know that Spring has it's context shutdown process, and wonder whether it's reasonable to call the shutdown somewhere from there.



What exactly happens if the ExecutorService doesn't get shutdown, and the Server is being closed or terminated? Doesn't the JVM just clears all memory related to this program?



Thanks







spring executorservice applicationcontext application-shutdown






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 11 at 16:54









Ido Gal

326721




326721







  • 1




    docs.spring.io/spring/docs/current/spring-framework-reference/…
    – JB Nizet
    Nov 11 at 16:59










  • Thanks. I've implemented a "shutdown"/"destroy" method according to the documentation. I still can't figure out on which scenario Spring performs such a shutdown process. If I'm just stopping the web server, the method doesn't get called.
    – Ido Gal
    Nov 12 at 6:40










  • Why are you doing the scheduling yourself instead of using @EnableScheduling with an @Scheduled annotation. This way Spring will manage the executor for you. Also how are you shutting down the server, nicely or by doing a kill?
    – M. Deinum
    Nov 12 at 7:26













  • 1




    docs.spring.io/spring/docs/current/spring-framework-reference/…
    – JB Nizet
    Nov 11 at 16:59










  • Thanks. I've implemented a "shutdown"/"destroy" method according to the documentation. I still can't figure out on which scenario Spring performs such a shutdown process. If I'm just stopping the web server, the method doesn't get called.
    – Ido Gal
    Nov 12 at 6:40










  • Why are you doing the scheduling yourself instead of using @EnableScheduling with an @Scheduled annotation. This way Spring will manage the executor for you. Also how are you shutting down the server, nicely or by doing a kill?
    – M. Deinum
    Nov 12 at 7:26








1




1




docs.spring.io/spring/docs/current/spring-framework-reference/…
– JB Nizet
Nov 11 at 16:59




docs.spring.io/spring/docs/current/spring-framework-reference/…
– JB Nizet
Nov 11 at 16:59












Thanks. I've implemented a "shutdown"/"destroy" method according to the documentation. I still can't figure out on which scenario Spring performs such a shutdown process. If I'm just stopping the web server, the method doesn't get called.
– Ido Gal
Nov 12 at 6:40




Thanks. I've implemented a "shutdown"/"destroy" method according to the documentation. I still can't figure out on which scenario Spring performs such a shutdown process. If I'm just stopping the web server, the method doesn't get called.
– Ido Gal
Nov 12 at 6:40












Why are you doing the scheduling yourself instead of using @EnableScheduling with an @Scheduled annotation. This way Spring will manage the executor for you. Also how are you shutting down the server, nicely or by doing a kill?
– M. Deinum
Nov 12 at 7:26





Why are you doing the scheduling yourself instead of using @EnableScheduling with an @Scheduled annotation. This way Spring will manage the executor for you. Also how are you shutting down the server, nicely or by doing a kill?
– M. Deinum
Nov 12 at 7:26


















active

oldest

votes











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%2f53251023%2flifecycle-starting-shutting-down-of-a-scheduledexecutorservice-inside-a-sprin%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown






























active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes















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.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • 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%2f53251023%2flifecycle-starting-shutting-down-of-a-scheduledexecutorservice-inside-a-sprin%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

Kleinkühnau

Makov (Slowakei)

Deutsches Schauspielhaus