Sorry didn't see Staffan's earlier reply :)
David
On 8/11/2016 9:23 PM, David Holmes wrote:
On 8/11/2016 8:44 PM, Robbin Ehn wrote:
Hi Ujwal,
synchronized(li) {
while (li.received < 1) {
li.wait(100);
}
}
I don't see why we need while loop ?
You should always perform a wait() in a loop checking the condition that
is being waited upon. This guards against lost-notifications and also
spurious wakeups.
To me it looks like you could just do:
synchronized(li) {
li.wait();
}
Since either we got notification and received must be bigger than 0.
Or jtreg timed out.
If the notifyAll() happened before you get here then you will wait()
until jtreg does time you out - even though the notification correctly
occurred.
That said, in this particular case doing a timed-wait achieves nothing
other than waking the thread so that it can go back to waiting again.
The "received" value will only change when a notifyAll occurs so there
is no need to poll it (unless aborting due to a timeout as per the
previous version).
Because the loop will never exit, unless the thread is interrupted, this
subsequent code has no affect:
112 if (li.received < 1) {
113 throw new RuntimeException("No notif received!");
David
-----
/Robbin ('r'eviewer)
On 11/04/2016 12:03 PM, Ujwal Vangapally wrote:
Please review this small change for the bug below
https://bugs.openjdk.java.net/browse/JDK-8168141
Webrev:
http://cr.openjdk.java.net/~asapre/sponsorships/Ujwal/JDK-8168141/webrev.01/
Thanks,
Ujwal.