Java.lang.Thread.setPriority vs android.os.Process.setThreadPriority

java.lang.Thread.setPriority y android.os.Process.setThreadPriority

¿En qué se diferencian?

En primer lugar, en la clase java.lang.Thread ,

 java.lang.Thread.setPriority(int priority) 

priority puede tener un valor de Thread.MIN_PRIORITY (= 1, más bajo) a Thread.MAX_PRIORITY (= 10, más alto).

Hay constantes relacionadas en la clase java.lang.Thread.

 public static final int MIN_PRIORITY = 1; public static final int NORM_PRIORITY = 5; public static final int MAX_PRIORITY = 10; 

En segundo lugar, en la clase android.os.Process ,

 android.os.Process.setThreadPriority(int priority) 

priority puede tener un valor de -20 (más alto) a 19 (más bajo).

Hay constantes relacionadas en la clase android.os.Process.

 public static final int THREAD_PRIORITY_AUDIO = -16; public static final int THREAD_PRIORITY_BACKGROUND = 10; public static final int THREAD_PRIORITY_DEFAULT = 0; public static final int THREAD_PRIORITY_DISPLAY = -4; public static final int THREAD_PRIORITY_FOREGROUND = -2; public static final int THREAD_PRIORITY_LESS_FAVORABLE = 1; public static final int THREAD_PRIORITY_LOWEST = 19; public static final int THREAD_PRIORITY_MORE_FAVORABLE = -1; public static final int THREAD_PRIORITY_URGENT_AUDIO = -19; public static final int THREAD_PRIORITY_URGENT_DISPLAY = -8; 

He encontrado que los valores de prioridad son diferentes, pero no sé por qué. No sé cómo funcionan de manera diferente.

¿En qué se diferencian?

Thread.setPriority sólo funciona para los objetos Java Thread; Es decir, roscas en la JVM actual. Por el contrario, el javadoc para Process.setThreadPriority dice que funciona para procesos y threads. Dado que los hilos / procesos son identificados por valores tid , no necesitan residir en la JVM actual.

Los valores de prioridad también son diferentes, pero eso es menos significativo. (En el caso de Thread , los valores se asignan a las prioridades de procesos / threads nativos de la plataforma.) En el caso de Process , los valores son nativos las prioridades de proceso / thread de la plataforma Linux.

No sé cómo funcionan de manera diferente.

Si se toma en cuenta las diferencias anteriores, funcionan igual. AFAIK, todas las JVM mainstream modernas se basan en el programador de hilos de la plataforma nativa y sus mecanismos de priorización.

La plataforma de Android a veces redefine algunos conceptos de java para mejorarlos para dispositivos con Android. Siempre debe utilizar las clases específicas de Android en los desarrollos de Android.

  • Aplicación de Android vs. Proceso
  • Obtención de una lista de procesos en ejecución y eliminación de un proceso específico
  • Cómo leer la salida del comando de proceso android
  • Cuando su BroadcastReceiver se invoca a través de un Intent, ¿en qué proceso se ejecuta?
  • La aplicación de Android no se cierra después de llamar a System.exit (0)
  • ¿Los fragmentos con setRetainInstance (true) sobreviven al cierre del proceso?
  • La notificación sigue en la barra después de matar al servicio
  • Cómo matar a mi propia actividad - la manera dura
  • Cómo forzar a detener una aplicación de Android
  • ¿Cómo puedo abrir un Fragmento de Android en un nuevo proceso?
  • ¿Cómo puedo ver qué wakelocks están activos?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.