Анализатор обнаружил подозрительный прямой вызов Thread.run(). Такой запуск потока может ввести в заблуждение. Когда метод run() объекта Thread вызывается напрямую, все действия в методе run() будут выполняться в текущем потоке, а не вновь созданном.
Рассмотрим некорректный вариант:
private class Foo implements Runnable { @Override public void run() {/*...*/} } .... Foo foo = new Foo(); new Thread(foo).run(); ....
В данном примере выполнение тела метода run() будет в текущем потоке. Так ли задумывалось? Для того, чтобы тело метод run() выполнилось в новом потоке, необходимо использовать метод start().
Корректный вариант:
private class Foo implements Runnable { @Override public void run() {/*...*/} } .... Foo foo = new Foo(); new Thread(foo).start(); ....
Данная диагностика классифицируется как:
|