Lifecycle (starting, shutting down) of a ScheduledExecutorService inside a Spring Signleton
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
add a comment |
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
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@EnableSchedulingwith an@Scheduledannotation. This way Spring will manage the executor for you. Also how are you shutting down the server, nicely or by doing akill?
– M. Deinum
Nov 12 at 7:26
add a comment |
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
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
spring executorservice applicationcontext application-shutdown
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@EnableSchedulingwith an@Scheduledannotation. This way Spring will manage the executor for you. Also how are you shutting down the server, nicely or by doing akill?
– M. Deinum
Nov 12 at 7:26
add a comment |
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@EnableSchedulingwith an@Scheduledannotation. This way Spring will manage the executor for you. Also how are you shutting down the server, nicely or by doing akill?
– 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
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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
@EnableSchedulingwith an@Scheduledannotation. This way Spring will manage the executor for you. Also how are you shutting down the server, nicely or by doing akill?– M. Deinum
Nov 12 at 7:26