Nuevo hilo varias veces
Quiero ejecutar un hilo cuando presiono un botón
public void ButtonClick(){ Thread thread = new Thread(){ public void run(){ Log.i("Test", "I'm in thread"); } }; thread.start(); }
Mi pregunta es: Quiero hacer clic varias veces en este botón. ¿Hay varios hilos aún existentes después de que se imprima el mensaje "Estoy en el hilo"? O cada vez que se termina la función de ejecución, el hilo se destruye?
- ¿Cómo puedo reiniciar un hilo en java / Android desde un botón?
- Afinidad de hilo para Android
- Diferencia entre el hilo principal y el hilo de interfaz de usuario
- Cómo y reiniciar el hilo de nuevo en la actividad creada
- Tema Android tarea de seguridad
En caso de que crear varios hilos que se ejecutan al mismo tiempo, ¿cómo puedo cerrarlos de una manera limpia?
¡Gracias por tu ayuda!
- ¿Qué biblioteca de tareas prioritarias de Android (Asynk Task, Multithreading) recomendaría para Android?
- Android gestión de hilos onPause
- Android esperando el hilo de la interfaz de usuario
- ¿Cómo evito esta espera ocupada?
- detectando la conexión a internet en android
- Bloques sincronizados android
- Android Looper y pila de llamadas
- Java.util.concurrent.RejectedExecutionException en Async Tarea Android
¿Hay varios hilos aún existentes después de que se imprima el mensaje "Estoy en el hilo"?
No. Cada uno de ellos será destruido automáticamente.
En caso de que crear varios hilos que se ejecutan al mismo tiempo, ¿cómo puedo cerrarlos de una manera limpia?
No hay necesidad de detener los hilos, que serán destruidos automáticamente una vez que terminan su tarea (ejecución de ejecución ).
Para manejar la simultaneidad y la seguridad debe buscar en java.util.concurrent
que es el marco de utilidad para manejar la simultaneidad en java.
¿Hay varios hilos aún existentes después de que se imprima el mensaje "Estoy en el hilo"? O cada vez que se termina la función de ejecución, el hilo se destruye?
En su caso, está creando muchos subprocesos desde que se crea un Thread para cada clic de botón.
La duración de Thread se ha terminado después de completar la última instrucción en el método run()
. Después de run()
método run()
, el hilo entrará en el estado TERMINATED
y no se puede volver a ejecutar.
Una mejor solución no es crear un nuevo Thread para cada clic de botón. Si necesita más subprocesos en su aplicación, vaya a un conjunto de subprocesos.
Java proporciona el marco de Executor para este propósito. Gestiona mejor el ciclo de vida del hilo.
Utilice una de las API, que devolverá ExecutorService
de Executors
Por ejemplo newFixedThreadPool(4)
Echa un vistazo a este post y este artículo para obtener más opciones.
En caso de que crear varios hilos que se ejecutan al mismo tiempo, ¿cómo puedo cerrarlos de una manera limpia?
Usted puede apagar el ExecutorService
como se cita debajo de SE post:
Cómo cerrar con firmeza java ExecutorService
Ya que está utilizando Android, tiene una alternativa más buena para multithreading: HandlerThread y Handler
Crear Thread everytime es una mala idea usar Thread Pool.
Crear una clase implementando Runnable en lugar de Anónimo … pasar un objeto ejecutable creando tantos threads como quierasDesde que crear objetos Runnable anónimo crea sólo un objeto limitándote así a cumplir tus requisitos. Compruebe el estado del subproceso antes de crear otro o cree un grupo de subprocesos (depreciado) o un grupo de subprocesos utilizando la simultaneidad que utilice callable en lugar de ejecutar y pasarlo al grupo de subprocesos de tamaño definido o puede convertir ejecutables a callable y luego pasarlo a la agrupación Tantas veces como quieras
class Thop implements Runnable { public void run() { // operation } }
- Android – radio por internet streaming
- Android Studio: guardar la versión del proyecto como copia de seguridad