resources.report.rules.pmd.DontCallThreadRun.html Maven / Gradle / Ivy
DontCallThreadRun
DontCallThreadRun
Explicitly calling Thread.run() method will execute in the caller’s thread of control. Instead, call Thread.start() for the intended behavior.
//StatementExpression/PrimaryExpression
[
PrimaryPrefix
[
./Name[ends-with(@Image, '.run') or @Image = 'run']
and substring-before(Name/@Image, '.') =//VariableDeclarator/VariableDeclaratorId/@Image
[../../../Type/ReferenceType[ClassOrInterfaceType/@Image = 'Thread']]
or (
./AllocationExpression/ClassOrInterfaceType[@Image = 'Thread']
and ../PrimarySuffix[@Image = 'run'])
]
]
Example(s):
Thread t = new Thread();
t.run(); // use t.start() instead
new Thread().run(); // same violation