更改线程优先级没有效果
我正在尝试使用 android.os.Process.setThreadPriority() 更改主线程的优先级。我在优先级更改之前和之后都有日志消息,这里是代码:
public class TestActivity extends Activity {
public final String TAG="TestActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int tid=(int)Thread.currentThread().getId();
Log.d(TAG,"priority before change = " + android.os.Process.getThreadPriority(tid));
Log.d(TAG,"priority before change = "+Thread.currentThread().getPriority());
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_DISPLAY);
Log.d(TAG,"priority after change = " + android.os.Process.getThreadPriority(tid));
Log.d(TAG,"priority after change = " + Thread.currentThread().getPriority());
}
}
我得到以下输出:
priority before change (getThreadPriority) = 0
priority before change (currentThread().getPriority) = 5
priority after change (getThreadPriority) = 0
priority after change (currentThread().getPriority) = 5
这意味着优先级没有改变,无论我使用什么方法来评估它。 android.os.Process.THREAD_PRIORITY_DISPLAY = -4
,所以更改后我的输出应该等于-4,为什么它保持不变?为什么android.os.Process.setThreadPriority()
没有效果?
PS我阅读了有关线程的谷歌文档,但没有遇到任何解释 android.os.Process.getThreadPriority()
和 Thread.currentThread().getPriority()< 之间差异的问题/代码>。为什么这些方法返回不同的值?
PPS Thread.currentThread().setPriority()
工作正常。
I'm trying to change priority of main thread using android.os.Process.setThreadPriority()
. I have log messages before and after priority changing, here is code:
public class TestActivity extends Activity {
public final String TAG="TestActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int tid=(int)Thread.currentThread().getId();
Log.d(TAG,"priority before change = " + android.os.Process.getThreadPriority(tid));
Log.d(TAG,"priority before change = "+Thread.currentThread().getPriority());
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_DISPLAY);
Log.d(TAG,"priority after change = " + android.os.Process.getThreadPriority(tid));
Log.d(TAG,"priority after change = " + Thread.currentThread().getPriority());
}
}
And I get the following output:
priority before change (getThreadPriority) = 0
priority before change (currentThread().getPriority) = 5
priority after change (getThreadPriority) = 0
priority after change (currentThread().getPriority) = 5
It means that priority didn't change, whatever method I use to evaluate it.android.os.Process.THREAD_PRIORITY_DISPLAY = -4
, so after changing my ouput should equal -4, why it remains the same? Why android.os.Process.setThreadPriority()
has no effect?
P.S. I read google docs about threads, but I didn't come across any issues explaining difference between android.os.Process.getThreadPriority()
and Thread.currentThread().getPriority()
. Why these methods return different values?
P.P.S. Thread.currentThread().setPriority()
works fine.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您在检查中使用了错误的 ThreadID。
要获得正确的 id,您必须使用 android.os.Process.myTid();
固定代码:
日志输出:
供进一步参考:
http://developer .android.com/reference/android/os/Process.html#myTid()
You are using the wrong ThreadID for your check.
To get the correct id you have to use android.os.Process.myTid();
Fixed code:
Log output:
For further reference:
http://developer.android.com/reference/android/os/Process.html#myTid()