Intereting Posts
Onclick прослушиватель в android StopSelf не останавливает мое обслуживание Как перезагрузить эмулятор устройства Android в Genymotion Кинжал не создает компоненты для / тестового класса Пост-компиляция удаление аннотаций из байтового кода Поддерживает ли веб-представление на Android поддержку SSL? Фрагмент имеет белый фон по умолчанию вместо replace () вместо прозрачного DownloadManager.ACTION_DOWNLOAD_COMPLETE широковещательный приемник, получающий один и тот же идентификатор загрузки более одного раза с разными статусами загрузки в Android Как установить тот же Android-приложение .apk два раза на одном устройстве? Android – поставщик файлов – отказ в разрешении Документация о доступных задачах Ant для Android? Какова высота панели инструментов Android? Разбиение макета XML на пользовательский LinearLayout создает избыточное представление LinearLayout Как определить сенсорный ввод на Android Android: Как получить данные Google Fit с Wearable устройства?

Отправить тему по названию

У меня многопоточное приложение, и я назначаю уникальное имя для каждого потока через setName() . Теперь я хочу, чтобы функциональность получала доступ к потокам напрямую с их соответствующим именем.

Что-то вроде следующей функции:

 public Thread getThreadByName(String threadName) { Thread __tmp = null; Set<Thread> threadSet = Thread.getAllStackTraces().keySet(); Thread[] threadArray = threadSet.toArray(new Thread[threadSet.size()]); for (int i = 0; i < threadArray.length; i++) { if (threadArray[i].getName().equals(threadName)) __tmp = threadArray[i]; } return __tmp; } 

Вышеупомянутая функция проверяет все текущие потоки и затем возвращает нужный поток из набора запущенных потоков. Может быть, мой желаемый поток прерывается, тогда вышеуказанная функция не будет работать. Любые идеи о том, как включить эту функциональность?

Solutions Collecting From Web of "Отправить тему по названию"

Вы можете найти все активные потоки с помощью ThreadGroup :

  • Получить группу текущего потока
  • Поработайте над иерархией нитей-групп, вызвав ThreadGroup.getParent() пока не найдете группу с нулевым родителем.
  • Вызовите ThreadGroup.enumerate() чтобы найти все потоки в системе.

Значение этого полностью ускользает от меня … что вы можете сделать с именованным потоком? Если вы не подклассифицируете Thread когда вы должны внедрять Runnable (для начала это небрежное программирование).

Итерация ответа Пита.

 public Thread getThreadByName(String threadName) { for (Thread t : Thread.getAllStackTraces().keySet()) { if (t.getName().equals(threadName)) return t; } return null; } 

Мне нравится идея HashMap лучше всего, но если вы хотите сохранить Set, вы можете перебирать Set, а не переходить к настройке преобразования в массив:

 Iterator<Thread> i = threadSet.iterator(); while(i.hasNext()) { Thread t = i.next(); if(t.getName().equals(threadName)) return t; } return null;