Thread.run() and Runnable.run() should not be called directly

  • squid : S1217

The purpose of the Thread.run() and Runnable.run() methods is to execute code in a separate, dedicated thread. Calling those methods directly doesn't make sense because it causes their code to be executed in the current thread.

To get the expected behavior, call the Thread.start() method instead.

Noncompliant Code Example

Thread myThread = new Thread(runnable);
myThread.run(); // Noncompliant

Compliant Solution

Thread myThread = new Thread(runnable);
myThread.start(); // Compliant
Close