org.sonar.l10n.java.rules.squid.S2273.html Maven / Gradle / Ivy
The newest version!
By contract, the method Object.wait(...)
, Object.notify()
and Object.notifyAll()
should be called by a thread that is the owner of the object's monitor. If this is not the case an IllegalMonitorStateException
exception is thrown. This rule reinforces this constraint by making it mandatory to call one of these methods only inside a synchronized
method or statement.
Noncompliant Code Example
private void removeElement() {
while (!suitableCondition()){
obj.wait();
}
... // Perform removal
}
or
private void removeElement() {
while (!suitableCondition()){
wait();
}
... // Perform removal
}
Compliant Solution
private void removeElement() {
synchronized(obj) {
while (!suitableCondition()){
obj.wait();
}
... // Perform removal
}
}
or
private synchronized void removeElement() {
while (!suitableCondition()){
wait();
}
... // Perform removal
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy