¿Cómo funciona el multi-threading en Android?

Estoy tratando de ejecutar 4 subprocesos en paralelo, pero no.

He intentado usar synchronous wait() y CyclicBarrier notify() CyclicBarrier ThreadPoolExecutor AsyncTask y muchos otros, pero no manejaba correr los hilos en paralelo.

¿Podemos ejecutar 4 hilos en paralelo (es decir, al mismo tiempo en android)? ¿Cómo?

Nota: Estoy trabajando con Audio Streaming usando AudioRecord y AudioTrack API.

¿Podemos ejecutar 4 hilos paralelos, es decir, al mismo tiempo en android ??

Sí, puede ejecutar 4 hilos en paralelo. La adición de más hilos generalmente ayuda, pero después de algún punto, causan una cierta degradación del rendimiento. Pero 4 hilos no causarán un problema.

Problemas: No puedo ejecutar el subproceso paralelo, es decir, 1ª ejecución de subprocesos: 4 veces, 2do 3n y 4o solo 1 vez. ¿Cómo hacer que se ejecute (probado utilizando los hilos mencionados pero sin éxito para ejecutar todos los paralelo de hilos) paralelo?

Si su objetivo es simplemente tener todos los subprocesos procesando activamente, sugiero que busque conjuntos de subprocesos Java (y Ejecutores en general).

Android support MULTI-ROSCADO? En caso afirmativo, ¿cómo funciona multi-threading en Android?

Sí, Android es compatible con Multithreading. La forma más preferida de implementarla (aparte de Thread Pool y Executor) es AsyncTask

AsyncTasc le permite implementar doInBackground() , donde su hilo puede arrancar su tarea. Esto es similar a la funcionalidad que obtendría de Thread .

La verdadera magia ocurre cuando se anula onPreExecute() y onPostExecute() , que se ejecutan en el subproceso de UI . Esto debería impedirle recibir mensajes sobre su actividad que no se adjunta.

Esta respuesta contiene un pequeño ejemplo de código para AsyncTask que podría empezar.

También, echa un vistazo a Handlers en Android

Editar: Lo que encontré durante mi investigación es que, la grabación, el envío y la recepción de audio son preocupaciones bastante interactivas y requieren recursos de sincronización y de E / S. La mejor solución posible podría ser, puede crear Tarea asíncrona independiente para cada una de las operaciones, de modo que cada operación se realice en su tarea asíncrona independiente.

  1. Puedes ejecutar 4 Hilos diferentes, pero para ejecutarlo en paralelo (simultáneamente) tienes que soportarlo. Si tiene una CPU de núcleo único, el orden en que se extienden los subprocesos corresponde al programador y sólo se ejecutará un subproceso a la vez
  2. El orden y el momento de la ejecución dependen del programador.
  3. Si lo hace Puede confiar en AsyncTask o en las características de java (Executors eg)

Puede utilizar Async Task para ejecutarlos en paralelo.

  • RejectedExecutionException de AsyncTask, pero no han alcanzado los límites
  • ¿Cómo funciona maximumPoolSize de ThreadPoolExecutor?
  • Mi clase AsyncTask tiene otros subprocesos en él. ¿Cómo puedo esperar a que termine con todos sus subprocesos antes de ejecutar un método siguiente?
  • ¿Es Thread.sleep (x) lo suficientemente preciso como para usarlo como reloj en Android?
  • ANR keyDispatchingTimedOut
  • Los anuncios de Android ralentizan mucho el rendimiento
  • Acceso a vistas desde otro hilo (Android)
  • Los subprocesos predeterminados de Android y su uso
  • Enhebrado en Android
  • Android: ejecuta código en intervalos regulares
  • Estadísticas de descargas de fondo de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.