android 设置线程的优先级
2012-02-26 14:46
127 查看
有两处API可以设置线程的优先级。
1、android.os.Process.setThreadPriority (int priority)
或
android.os.Process.setThreadPriority (int tid, int priority)
priority:【-20, 19】,高优先级 -> 低优先级。
2、java.lang.Thread.setPriority (int priority)
priority:【1, 10】,低优先级 -> 高优先级。
测试后发现,使用android自己的API(第1种方法)设置的优先级,对线程调度影响显著。
测试代码如下:
1、android.os.Process.setThreadPriority (int priority)
或
android.os.Process.setThreadPriority (int tid, int priority)
priority:【-20, 19】,高优先级 -> 低优先级。
2、java.lang.Thread.setPriority (int priority)
priority:【1, 10】,低优先级 -> 高优先级。
测试后发现,使用android自己的API(第1种方法)设置的优先级,对线程调度影响显著。
测试代码如下:
package com.test.testx; import android.app.Activity; import android.os.Bundle; import android.os.Process; import android.util.Log; public class TestThreadPriority extends Activity { private static final String TAG ="TestThreadPriority"; private boolean mNeedExit = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyThread a = new MyThread("Thread A"); a.setOSPriority(Process.THREAD_PRIORITY_LOWEST); // 19 a.setPriority(Thread.MAX_PRIORITY); // 10 MyThread b = new MyThread("Thread B"); b.setOSPriority(Process.THREAD_PRIORITY_URGENT_AUDIO); // -19 b.setPriority(Thread.MIN_PRIORITY); // 1 a.start(); b.start(); } @Override public void onBackPressed() { mNeedExit = true; super.onBackPressed(); } private class MyThread extends Thread { private int mOSPriority = Process.THREAD_PRIORITY_DEFAULT; private int mLoopCount = 0; public MyThread(String threadName) { super(threadName); } public void setOSPriority(int p) { mOSPriority = p; } @Override public void run() { Process.setThreadPriority(mOSPriority); while(!mNeedExit) { mLoopCount ++; Math.log(Math.random() * 1000); // calculation test Log.d(TAG, new StringBuilder().append(getName()) .append(" os priority: ").append(mOSPriority) .append(" java priority: ").append(getPriority()) .append(" loop count: ").append(mLoopCount).toString()); } Log.d(TAG, new StringBuilder().append(getName()).append(" exiting...") .append(" os priority: ").append(mOSPriority) .append(" java priority: ").append(getPriority()) .append(" loop count: ").append(mLoopCount).toString()); } } }
相关文章推荐
- android 设置线程优先级
- Android线程优先级设置方法
- Android 线程优先级设置方法
- Android 线程优先级设置方法
- android 线程的优先级设置方法
- Android线程优先级规定及其设置的具体方法
- android 线程优先级设置方法
- Android线程优先级设置方法
- android 线程优先级设置
- android 设置线程优先级 两种方式
- Android线程优先级设置方法
- Android 线程优先级设置方法
- Android线程优先级设置方法技巧
- Android线程优先级设置方法技巧
- Android线程优先级设置方法技巧
- (转)android 设置线程的优先级
- Android 线程优先级设置方法
- Android 线程优先级设置方法
- java学习日记_99:线程的设置优先级和常用方法
- 设置线程优先级