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:
- Progressdialog lento para mostrar en Android
- Cómo esperar el inicio de un subproceso en java
- Obtener referencia a Thread Object desde su ID
- Dormir un hilo hasta que un evento sea asistido en otro hilo
- Cómo usar notificar y esperar
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?
- ¿Algún consejo sobre cómo acelerar esto en Android?
- Cómo evitar la señal fatal 6 (SIGABRT) en android
- diferencia runable androide
- Cómo suspender y reanudar los hilos en android?
- Android: forma correcta de pasar un mensaje de hilo de fondo a hilo de interfaz de usuario?
- Cómo ejecutar un hilo Runnable en Android?
- Cómo comprobar si se ejecuta en el hilo de la interfaz de usuario en Android?
- ¿Cómo textView.setText de hilo?
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 aThreadGroup.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;
- Java.io.FileNotFoundException (permiso denegado) Al intentar escribir en el sdcard de Android
- Diálogo de personalización extendiendo Dialog o AlertDialog