notify() -> all of the threads in wait set must exit
According to 17.2.4. Interactions of Waits, Notification, and Interruption:
Similarly, notifications cannot be lost due to interrupts. Assume that
a set s of threads is in the wait set of an object m, and another
thread performs a notify on m. Then either:
a) at least one thread in s must return normally from wait, or
b) all of the threads in s must exit wait by throwing
InterruptedException
This surprises me because I know that notify()
only wakes up a single thread so b) couldn't happen. The b) option seems to me a completely non-sense because besides implying that notify()
is behaving like notifyAll()
it's also supposed to interrupt all waiting threads.
Q: is this paragraph wrong? If not then why not?
java multithreading jls
add a comment |
According to 17.2.4. Interactions of Waits, Notification, and Interruption:
Similarly, notifications cannot be lost due to interrupts. Assume that
a set s of threads is in the wait set of an object m, and another
thread performs a notify on m. Then either:
a) at least one thread in s must return normally from wait, or
b) all of the threads in s must exit wait by throwing
InterruptedException
This surprises me because I know that notify()
only wakes up a single thread so b) couldn't happen. The b) option seems to me a completely non-sense because besides implying that notify()
is behaving like notifyAll()
it's also supposed to interrupt all waiting threads.
Q: is this paragraph wrong? If not then why not?
java multithreading jls
add a comment |
According to 17.2.4. Interactions of Waits, Notification, and Interruption:
Similarly, notifications cannot be lost due to interrupts. Assume that
a set s of threads is in the wait set of an object m, and another
thread performs a notify on m. Then either:
a) at least one thread in s must return normally from wait, or
b) all of the threads in s must exit wait by throwing
InterruptedException
This surprises me because I know that notify()
only wakes up a single thread so b) couldn't happen. The b) option seems to me a completely non-sense because besides implying that notify()
is behaving like notifyAll()
it's also supposed to interrupt all waiting threads.
Q: is this paragraph wrong? If not then why not?
java multithreading jls
According to 17.2.4. Interactions of Waits, Notification, and Interruption:
Similarly, notifications cannot be lost due to interrupts. Assume that
a set s of threads is in the wait set of an object m, and another
thread performs a notify on m. Then either:
a) at least one thread in s must return normally from wait, or
b) all of the threads in s must exit wait by throwing
InterruptedException
This surprises me because I know that notify()
only wakes up a single thread so b) couldn't happen. The b) option seems to me a completely non-sense because besides implying that notify()
is behaving like notifyAll()
it's also supposed to interrupt all waiting threads.
Q: is this paragraph wrong? If not then why not?
java multithreading jls
java multithreading jls
edited Dec 27 '18 at 16:16
asked Dec 27 '18 at 14:57
adrhc
430314
430314
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
all of the threads in
s
must exit wait by throwing InterruptedException
This means all threads waiting on s
were interrupted.
b) means that if all threads are interrupted, no thread will wake from wait()
normally, due to being interrupted.
Thanks, but from where do you deduce that is about the situation when all threads are interrupted?
– adrhc
Dec 27 '18 at 16:07
@adrhc updated my answer.
– Peter Lawrey
Dec 27 '18 at 16:09
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%2f53946979%2fnotify-all-of-the-threads-in-wait-set-must-exit%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
all of the threads in
s
must exit wait by throwing InterruptedException
This means all threads waiting on s
were interrupted.
b) means that if all threads are interrupted, no thread will wake from wait()
normally, due to being interrupted.
Thanks, but from where do you deduce that is about the situation when all threads are interrupted?
– adrhc
Dec 27 '18 at 16:07
@adrhc updated my answer.
– Peter Lawrey
Dec 27 '18 at 16:09
add a comment |
all of the threads in
s
must exit wait by throwing InterruptedException
This means all threads waiting on s
were interrupted.
b) means that if all threads are interrupted, no thread will wake from wait()
normally, due to being interrupted.
Thanks, but from where do you deduce that is about the situation when all threads are interrupted?
– adrhc
Dec 27 '18 at 16:07
@adrhc updated my answer.
– Peter Lawrey
Dec 27 '18 at 16:09
add a comment |
all of the threads in
s
must exit wait by throwing InterruptedException
This means all threads waiting on s
were interrupted.
b) means that if all threads are interrupted, no thread will wake from wait()
normally, due to being interrupted.
all of the threads in
s
must exit wait by throwing InterruptedException
This means all threads waiting on s
were interrupted.
b) means that if all threads are interrupted, no thread will wake from wait()
normally, due to being interrupted.
edited Dec 27 '18 at 16:08
answered Dec 27 '18 at 15:56
Peter Lawrey
441k55558959
441k55558959
Thanks, but from where do you deduce that is about the situation when all threads are interrupted?
– adrhc
Dec 27 '18 at 16:07
@adrhc updated my answer.
– Peter Lawrey
Dec 27 '18 at 16:09
add a comment |
Thanks, but from where do you deduce that is about the situation when all threads are interrupted?
– adrhc
Dec 27 '18 at 16:07
@adrhc updated my answer.
– Peter Lawrey
Dec 27 '18 at 16:09
Thanks, but from where do you deduce that is about the situation when all threads are interrupted?
– adrhc
Dec 27 '18 at 16:07
Thanks, but from where do you deduce that is about the situation when all threads are interrupted?
– adrhc
Dec 27 '18 at 16:07
@adrhc updated my answer.
– Peter Lawrey
Dec 27 '18 at 16:09
@adrhc updated my answer.
– Peter Lawrey
Dec 27 '18 at 16:09
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.
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%2f53946979%2fnotify-all-of-the-threads-in-wait-set-must-exit%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