All Downloads are FREE. Search and download functionalities are using the official Maven repository.

resources.report.rules.pmd.UseNotifyAllInsteadOfNotify.html Maven / Gradle / Ivy



UseNotifyAllInsteadOfNotify


UseNotifyAllInsteadOfNotify

Thread.notify() awakens a thread monitoring the object. If more than one thread is monitoring, then only one is chosen. The thread chosen is arbitrary; thus it's usually safer to call notifyAll() instead.

This rule is defined by the following XPath expression:

    
//StatementExpression/PrimaryExpression
[count(PrimarySuffix/Arguments/ArgumentList) = 0]
[
PrimaryPrefix[./Name[@Image='notify' or ends-with(@Image,'.notify')]
or @Image='notify'
or (./AllocationExpression and ../PrimarySuffix[@Image='notify'])
]
]
    
              

Example:

                

public class Foo {
 void bar() {
  x.notify();
  // If many threads are monitoring x, only one (and you won't know which) will be notified.
  // use instead:
  x.notifyAll();
 }
}

      
            




© 2015 - 2025 Weber Informatics LLC | Privacy Policy