Java 8 How to kick off a thread just before returning of a method
I have a service written in Java Spring. This service is to return a computational result to the user. However, I also want to do some additional task (a side task) with that result and it should not affect the performance. So my question is how can I kick off another Thread to do the additional task without preventing returning the result back to the user.
spring multithreading java-8
add a comment |
I have a service written in Java Spring. This service is to return a computational result to the user. However, I also want to do some additional task (a side task) with that result and it should not affect the performance. So my question is how can I kick off another Thread to do the additional task without preventing returning the result back to the user.
spring multithreading java-8
Spin anAsync
service in your service when result is ready?
– Eugene
Nov 16 '18 at 4:58
How? I know it has to be an async. Just don't know how.
– TrongBang
Nov 16 '18 at 5:11
create a new service that your service will use. Once the result is ready, before returning it from the method, invoke the other service:otherService.execute(result); return result;
. ThisOtherSetvice::execute
is annotated with@Async
- there millions of google searches on how to do this
– Eugene
Nov 16 '18 at 5:13
add a comment |
I have a service written in Java Spring. This service is to return a computational result to the user. However, I also want to do some additional task (a side task) with that result and it should not affect the performance. So my question is how can I kick off another Thread to do the additional task without preventing returning the result back to the user.
spring multithreading java-8
I have a service written in Java Spring. This service is to return a computational result to the user. However, I also want to do some additional task (a side task) with that result and it should not affect the performance. So my question is how can I kick off another Thread to do the additional task without preventing returning the result back to the user.
spring multithreading java-8
spring multithreading java-8
asked Nov 16 '18 at 4:55
TrongBangTrongBang
344314
344314
Spin anAsync
service in your service when result is ready?
– Eugene
Nov 16 '18 at 4:58
How? I know it has to be an async. Just don't know how.
– TrongBang
Nov 16 '18 at 5:11
create a new service that your service will use. Once the result is ready, before returning it from the method, invoke the other service:otherService.execute(result); return result;
. ThisOtherSetvice::execute
is annotated with@Async
- there millions of google searches on how to do this
– Eugene
Nov 16 '18 at 5:13
add a comment |
Spin anAsync
service in your service when result is ready?
– Eugene
Nov 16 '18 at 4:58
How? I know it has to be an async. Just don't know how.
– TrongBang
Nov 16 '18 at 5:11
create a new service that your service will use. Once the result is ready, before returning it from the method, invoke the other service:otherService.execute(result); return result;
. ThisOtherSetvice::execute
is annotated with@Async
- there millions of google searches on how to do this
– Eugene
Nov 16 '18 at 5:13
Spin an
Async
service in your service when result is ready?– Eugene
Nov 16 '18 at 4:58
Spin an
Async
service in your service when result is ready?– Eugene
Nov 16 '18 at 4:58
How? I know it has to be an async. Just don't know how.
– TrongBang
Nov 16 '18 at 5:11
How? I know it has to be an async. Just don't know how.
– TrongBang
Nov 16 '18 at 5:11
create a new service that your service will use. Once the result is ready, before returning it from the method, invoke the other service:
otherService.execute(result); return result;
. This OtherSetvice::execute
is annotated with @Async
- there millions of google searches on how to do this– Eugene
Nov 16 '18 at 5:13
create a new service that your service will use. Once the result is ready, before returning it from the method, invoke the other service:
otherService.execute(result); return result;
. This OtherSetvice::execute
is annotated with @Async
- there millions of google searches on how to do this– Eugene
Nov 16 '18 at 5:13
add a comment |
1 Answer
1
active
oldest
votes
Wrap your additional task using a Runnable
. Then submit it to an executor service like so,
String response = invokeEp();
Runnable task = () -> doSomeWork(response);
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(task);
return response;
add a comment |
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%2f53331670%2fjava-8-how-to-kick-off-a-thread-just-before-returning-of-a-method%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
Wrap your additional task using a Runnable
. Then submit it to an executor service like so,
String response = invokeEp();
Runnable task = () -> doSomeWork(response);
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(task);
return response;
add a comment |
Wrap your additional task using a Runnable
. Then submit it to an executor service like so,
String response = invokeEp();
Runnable task = () -> doSomeWork(response);
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(task);
return response;
add a comment |
Wrap your additional task using a Runnable
. Then submit it to an executor service like so,
String response = invokeEp();
Runnable task = () -> doSomeWork(response);
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(task);
return response;
Wrap your additional task using a Runnable
. Then submit it to an executor service like so,
String response = invokeEp();
Runnable task = () -> doSomeWork(response);
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(task);
return response;
answered Nov 16 '18 at 5:01
Ravindra RanwalaRavindra Ranwala
11.2k42241
11.2k42241
add a comment |
add a comment |
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.
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%2f53331670%2fjava-8-how-to-kick-off-a-thread-just-before-returning-of-a-method%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
Spin an
Async
service in your service when result is ready?– Eugene
Nov 16 '18 at 4:58
How? I know it has to be an async. Just don't know how.
– TrongBang
Nov 16 '18 at 5:11
create a new service that your service will use. Once the result is ready, before returning it from the method, invoke the other service:
otherService.execute(result); return result;
. ThisOtherSetvice::execute
is annotated with@Async
- there millions of google searches on how to do this– Eugene
Nov 16 '18 at 5:13