Obtener hilo por nombre

Tengo una aplicación multiproceso y asigno un nombre único a cada subproceso a través de la propiedad setName() . Ahora, quiero funcionalidad para obtener acceso a los hilos directamente con su nombre correspondiente.

Algo como la siguiente función:

 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; } 

La función anterior comprueba todos los subprocesos en ejecución y, a continuación, devuelve el subproceso deseado del conjunto de subprocesos en ejecución. Tal vez mi hilo deseado se interrumpe, entonces la función anterior no funcionará. ¿Ideas sobre cómo incorporar esa funcionalidad?

Puede encontrar todos los temas activos mediante ThreadGroup :

  • Obtener el grupo de tu hilo actual
  • Trabaje su camino hasta la jerarquía del grupo de ThreadGroup.getParent() llamando a ThreadGroup.getParent() hasta encontrar un grupo con un padre nulo.
  • Llame a ThreadGroup.enumerate() para encontrar todos los subprocesos en el sistema.

El valor de hacer esto me escapa completamente … ¿qué harás posiblemente con un hilo con nombre? A menos que esté subclasificando Thread cuando debería implementar Runnable (lo cual es una programación descuidada para empezar).

Una iteración de la respuesta de Pete.

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

Me gusta la idea de HashMap mejor, pero si quieres mantener el conjunto, puedes iterar sobre el conjunto, en lugar de pasar por la configuración de convertir a una matriz:

 Iterator<Thread> i = threadSet.iterator(); while(i.hasNext()) { Thread t = i.next(); if(t.getName().equals(threadName)) return t; } return null; 
  • ¿Cómo funciona el multi-threading en Android?
  • La mejor práctica para manejar el cambio de orientación: Android
  • Android: ¿Posible que el hilo de fondo bloquee hasta que el hilo de UI finalice la operación?
  • Java / Android espera hasta que haya terminado un hilo antes de ejecutar un nuevo método
  • Múltiples AudioTracks, Single Thread o Multiple?
  • Cómo utilizar runOnUiThread sin obtener "no puede hacer una referencia estática al método no estático" error de compilador
  • La mejor manera de enviar solicitudes HTTP GET ansynchronously en Android?
  • Pantalla secundaria de Android: persistencia a través de la invocación de actividad
  • Número de impacto del Servicio en la eficiencia de la aplicación
  • ¿Cómo puedo ejecutar código en un hilo de fondo en Android?
  • Espere a que el hilo en línea termine antes de pasar al siguiente método
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.