¿Cuál es la diferencia entre Thread.setPriority () y android.os.Process.setThreadPriority ()
Así que si tengo código como:
Runnable r = ...; Thread thread = new Thread(r); thread.setPriority((Thread.MAX_PRIORITY + Thread.NORM_PRIORITY) / 2);
O
Runnable r = ... Thread thread = new Thread( new Runnable() { public void run() { android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_MORE_FAVORABLE); r.run(); } });
¿Es la forma android.os.Process requerida / preferida?
¿POR QUÉ es la manera de android.os.Process preferido / requerido si es?
Esto no está claramente documentado por lo que puedo decir.
La implementación actual de Dalvik parece mapear Java Threads ony por uno al sistema Linux subyacente PTHREADs como usted dice. Todos los Temas de todas las aplicaciones pertenecen al mismo grupo de subprocesos del sistema, por lo que cada Tema compite con todos los Temas de todas las aplicaciones.
Así que actualmente Thread.setPriority
debe hacer lo mismo que Process.setThreadPriority
, usando la escala de prioridad Java más pequeña, la asignación de prioridades se define en kNiceValues
en vm / Thread.c
Google utiliza
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
En Volley's Network Dispatcher thread, por lo que creo que el uso de Process.setThreadPriority () es el camino a seguir.
thread.setPriority()
en thread.setPriority()
. El android.os.Process.setThreadPriority
nombra una prioridad de hilo real del sistema operativo linux subyacente. Sin embargo, éstos podrían, pero no necesitan mapear a los subprocesos de Dalvik / Java VM, ya que la máquina virtual podría hacer subprocesos en sus propios medios o utilizar subprocesos del sistema o una combinación de ambos. Aumentar la prioridad del sistema podría resultar en priorizar su aplicación en favor de otros, si no está restringido por las restricciones de seguridad de Android, pero no garantiza la priorización de su actual hilo de Java a favor de otros hilos de Java en su aplicación.