Conjunto de subprocesos en Java
Escribo la aplicación en Java usando ThreadPool. Primero creo nuevo ThreadPool:
private ExecutorService threadExecutor = Executors.newFixedThreadPool( 20 );
Entonces creo algunos objetos Runnable. Después de eso ejecuto mi ThreadPool de vez en cuando pasándole el mismo objeto Runnable:
- Llamada Hilo principal de hilo secundario en Java / Android
- Múltiples AudioTracks, Single Thread o Multiple?
- ¿Cómo puede el puerto AsyncTask de Android a Java?
- ¿Es seguro usar Java Threads de la misma manera que las aplicaciones de escritorio?
- Comunicación multihilo: ¿qué tan bueno es el uso de variables atómicas como AtomicInteger? ¿Por qué no hay AtomicFloat?
threadExecutor.execute(serverRunnable);
Ejecuto este ThreadPool cada 20 segundos. Mi problema es que threadExecutor deja de funcionar durante unos 5 minutos. Simplemente no ejecuta objeto Runnable. Noto que cuando aumento el argumento en:
Executors.newFixedThreadPool( 20 );
Desde 20 hasta 100 ThreadPool funcionará más tiempo. ¿Puede alguien explicarme por qué ThreadPool deja de funcionar?
PD. Escribo este código en Android
- Cómo setText de un hilo independiente en Android
- La aplicación se bloquea y suspende todos los subprocesos al utilizar AsyncTask
- Los animadores sólo se pueden ejecutar en los subprocesos Looper en Sherlock Action Bar
- Inicio de un runnable en el hilo de fondo
- Cómo esperar a que Android runOnUiThread para ser terminado?
- Llamada desde una excepción de hilo incorrecto
- ¿Cómo detener un hilo?
- ¿Cuál es la mejor práctica para hacer llamadas http en android
En primer lugar si desea programar como tarea para la ejecución cada 20 segundos intente utilizar ScheduledThreadPoolExecutor en su lugar: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html
Parece que su runnable no termina – de esta manera superará los 20 hilos después de una cantidad fija de tiempo. Si su runnable termina normalmente – usted podrá utilizar su ejecutor infinitamente largo.
- ¿Hay alguna manera de hacer compresión de imágenes y ahorrar más rápido en Android?
- Cuando depuro mi aplicación consigo con frecuencia el error del lanzamiento: No pudo conectar con la VM alejada