]
Ron Sigal updated JBREM-766:
----------------------------
Fix Version/s: 2.2.1.SP1
2.2.0.SP4_CP02
Affects Version/s: 2.2.0.SP4
2.2.1.GA
2.2.0.SP4_CP02
Guard against "spurious wakeup" from Thread.sleep()
---------------------------------------------------
Key: JBREM-766
URL:
http://jira.jboss.com/jira/browse/JBREM-766
Project: JBoss Remoting
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 2.4.0.Beta1 (Pinto), 2.2.0.SP4, 2.2.1.GA, 2.2.0.SP4_CP02
Reporter: Ron Sigal
Assigned To: Ron Sigal
Fix For: 2.4.0.Beta1 (Pinto), 2.2.0.SP4_CP02, 2.2.1.SP1
The jdk 1.5 javadoc for java.lang.Object (but not the jdk 1.4 javadoc) notes:
A thread can also wake up without being notified, interrupted, or timing out, a so-called
spurious wakeup. While this will rarely occur in practice, applications must guard against
it by testing for the condition that should have caused the thread to be awakened, and
continuing to wait if the condition is not satisfied. In other words, waits should always
occur in loops, like this one:
synchronized (obj) {
while (<condition does not hold>)
obj.wait(timeout);
... // Perform action appropriate to condition
}
(For more information on this topic, see Section 3.2.3 in Doug Lea's "Concurrent
Programming in Java (Second Edition)" (Addison-Wesley, 2000), or Item 50 in Joshua
Bloch's "Effective Java Programming Language Guide" (Addison-Wesley, 2001).
We should make sure all calls to Thread.wait() are handled appropriately.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: