Подтвердить что ты не робот

Какая разница между Thread.setPriority() и android.os.Process.setThreadPriority()

Если у меня есть код вроде:

Runnable r = ...;

Thread  thread = new Thread(r);
thread.setPriority((Thread.MAX_PRIORITY + Thread.NORM_PRIORITY) / 2);

или...

    Runnable r = ...
    Thread thread = new Thread( new Runnable() {
       public void run() {
         android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_MORE_FAVORABLE);
         r.run();
       }
    });

IS. Требуется/предпочитается способ android.os.Process?

ПОЧЕМУ является способом android.os.Process предпочтительным/обязательным, если он есть?

Это не ясно документировано, насколько я могу судить.

4b9b3361

Ответ 1

Текущая реализация Dalvik, кажется, отображает потоки Java один за другим в базовые PTHREAD системы Linux, как вы сказали. Все потоки всех приложений принадлежат одной и той же группе потоков в системе, поэтому каждый поток конкурирует со всеми потоками всех приложений.

Поэтому в настоящее время Thread.setPriority должен делать то же самое, что и Process.setThreadPriority, используя меньшую шкалу приоритетов Java. Отображение приоритетов определяется в kNiceValues в vm/Thread.c

Ответ 2

Google использует

Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);

в разделе Volley Network Dispatcher, поэтому я считаю, что использование метода Process.setThreadPriority() - это путь.

Ответ 3

Я полагался бы на thread.setPriority(). android.os.Process.setThreadPriority обозначает реальный приоритет потока для ОС Linux с базовым уровнем. Тем не менее, они могут, но не должны отображаться в потоках Dalvik/Java VM, поскольку виртуальная машина может выполнять потоки по собственному усмотрению или использовать системные потоки или их комбинацию. Повышение приоритета системы, скорее всего, приведет к приоритизации вашего приложения в пользу других, если не ограничено ограничениями безопасности для Android, но не гарантирует приоритет вашего текущего Java-потока в пользу других потоков Java в вашем приложении.