#android #многопоточность #android_threads
Я работаю с потоками в своем проекте. Среди прочих потоков, в двух разных классах создается две HandlerThread таким вот образом: HandlerThread thread = new HandlerThread("ServiceThread", Process.THREAD_PRIORITY_DEFAULT); Дальше они стартуются: thread.start();, и я использую их луперы. И только что я обнаружил, что они создаются с абсолютно одинаковыми именами (первый параметр в конструкторе - имя). Мой вопрос состоит в том, могут ли быть проблемы из за того, что у потоков одинаковые имена? Являются ли имена какими-то идентификаторами для потоков?
Ответы
Ответ 1
Не будет проблем. При создании нового HandlerThread вызывается конструктор: public HandlerThread(String name, int priority) { super(name); mPriority = priority; } Идем вглубь и видим if (threadName == null) { this.name = "Thread-" + id; } else { this.name = threadName } Что и есть практическим подтверждением написанного в Javadoc: Каждый поток имеет имя в целях идентификации. Более чем один поток может иметь такое же имя . Если имя не указано , когда создается поток, новое имя генерируется для него.Ответ 2
Нет, имена в thread не имеют никакого значения кроме удобства тестирования и логирования. Уникальным идентификатором thread будет pid.Ответ 3
Из оффдока Every thread has a name for identification purposes. More than one thread may have the same name. If a name is not specified when a thread is created, a new name is generated for it. По идее про проблемы ничего не сказано, значит это нормально
Комментариев нет:
Отправить комментарий