== Why is this an issue?

The `java.util.concurrent.locks.Condition` interface provides an alternative to the `Object` monitor methods (`wait`, `notify` and `notifyAll`).
Hence, the purpose of implementing said interface is to gain access to its more nuanced `await` methods.

Consequently, calling the method `Object.wait` on a class implementing the `Condition` interface is contradictory and should be avoided. Use `Condition.await` instead.

== Code examples

=== Noncompliant code example

[source,java,diff-id=1,diff-type=noncompliant]
----
void doSomething(Condition condition) {
    condition.wait(); // Noncompliant, Object.wait is called

        ...
}
----


=== Compliant solution

[source,java,diff-id=1,diff-type=compliant]
----
void doSomething(Condition condition) {
    condition.await(); // Compliant, Condition.await is called

        ...
}
----

== References
* https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Condition.html[Interface Condition - Java™ Platform SE 8, API Specification]

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

=== Message

The "Condition.await(...)" method should be used instead of "Object.wait(...)"


endif::env-github,rspecator-view[]
