Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Hilo con estados personalizados

¿Es posible en Java (Android) para implementar una versión personalizada de un hilo que lleva a sus propios Estados?

Lo que quiero decir es: Mientras ThreadA está en estado de ejecución, todavía puede ser consultado por ThreadB que pide su estado

eg ThreadA.getState(); 

¿Es posible modificar los valores de estados a algunos? ¿Para implementar una especie de sistema básico de comunicación entre esos dos hilos?

Gracias.

4 Solutions collect form web for “Hilo con estados personalizados”

Sí, eso es posible. He utilizado esto mucho en mis proyectos anteriores, todo lo que necesitas es ampliar la clase Thread .

 public class StateThread extends Thread{ String state = "ThreadState"; public synchronized void setState(String newState){ state = newState; } public synchronized String getState(){ return state; } @override public void run(){ // Do stuff and update state... } } 

Sí, es posible realizar esta tarea.
¿Es un buen diseño? No lo creo.
Hay otros medios para realizar la comunicación entre hilos –
Por ejemplo, debe utilizar una cola con un patrón Producer / Consumer.
Estoy seguro de que Android, ya que JavaSE soporta el hilo local – se puede utilizar para gestionar los datos de los hilos locales (incluidos los estados) (tal vez en combinación con una cola que obtendrá "operaciones" para cambiar el estado gestionado por un hilo
Si usted decide ir para la solución de tener los métodos setState y getState, al menos considere el uso de ReaderWriterLock para optimizar su bloqueo

El estado de los Hilos es mantenido por la Máquina Virtual. VM utiliza el estado para supervisar y administrar el subproceso real.

Es por eso que no hay ningún mecanismo para modificar el estado del hilo. No hay ninguna función setState que permita establecer su estado personalizado.

Para el propósito de su aplicación, puede definir sus propias variables de instancia extendiendo Thread pero no puede alterar el estado de Thread de ninguna manera.

Sincronizar con datos compartidos no es muy útil para determinar el 'estado' de un hilo – el hilo escribe su estado como 'sano', luego se queda atascado – el hilo del monitor luego comprueba el estado y lo encuentra sano.

Monitorear el "estado" debe significar hacer que el hilo marcado haga algo, no sólo mirar directamente a algún objeto compartido.

Si tiene un diseño de paso de mensajes (como sugiere zaske), puede pasar alrededor de un "registro de estado" en la cola de entrada de cada hilo, pidiéndole que registre su estado dentro y lo pase al siguiente hilo. El hilo de "monitor" espera que el registro vuelva, todo lleno. Si no lo consigue en un tiempo resonable, podría registrar lo que tiene – mantiene una referencia al objeto de registro de estado, por lo que podría ver Que hilo no ha actualizado su estado. Podría, quizás, no alimentar un temporizador de vigilancia.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.