转自: http://www.eoeandroid.com/thread-112252-1-1.html
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种方法)设置的优先级,对线程调度影响显著.
------------------------------------------------
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());
}
}
}
分享到:
相关推荐
设置线程的优先级,设置参数 afebegeinthreand 设置参数 简单dedemo vc2008
对于Android平台上的线程优先级设置来说可以处理很多并发线程的阻塞问题,比如很多无关紧要的线程会占用大量的CPU时间,虽然通过了MultiThread来解决慢速I/O但是合理分配优先级对于并发编程来说十分重要
VC++ 线程优先级 示例程序 VC++线程优先级示例程序-赛马,不同优先级执行的程序显示在进度条中,有长有短,像赛马一样,体现出每个线程被执行的优先顺序。
VC 线程优先级 赛马演示 VC 线程优先级 赛马演示 VC 线程优先级 赛马演示
JAVA多线程,并设置优先级案例,一段完整的程序,加上自己的东西就可以跑起来
VC++6.0做的一个创建多线程并设置不同的优先级的小程序
* <p>Title: 提高线程优先级 * <p>Description: 通过修改线程的优先级,是线程获得优先处理。 * <p>Copyright: Copyright (c) 2003 * <p>Filename: upPRIThread.java * @author * @version 1.0
VisualC 实效编程 61 线程优先级示例-赛马VisualC 实效编程 61 线程优先级示例-赛马VisualC 实效编程 61 线程优先级示例-赛马VisualC 实效编程 61 线程优先级示例-赛马VisualC 实效编程 61 线程优先级示例-赛马...
多核课程 多线程优先级示例_赛马 通过例子来演示多线程优先级
10.如何使用线程优先级?(Visual C++编程 源代码)10.如何使用线程优先级?(Visual C++编程 源代码)10.如何使用线程优先级?(Visual C++编程 源代码)10.如何使用线程优先级?(Visual C++编程 源代码)10.如何...
易语言源码易语言设定线程优先级源码完整版-带支持库
该程序演示了多线程的优先级问题,通过运行状态比较了线程的优先级不同时每个线程的进展情况。
VC 用进度条表示多线程优先级执行问题,程序将演示各个线程执行的优先级,当然这是在程序中设置好的,程序将按照设定运行各个线程,当然,优先级不一样,将按以下顺序启动线程:关键时间最先执行,最高其次,然后...
易语言源码易语言设定线程优先级源码.rar 易语言源码易语言设定线程优先级源码.rar 易语言源码易语言设定线程优先级源码.rar 易语言源码易语言设定线程优先级源码.rar 易语言源码易语言设定线程优先级源码.rar ...
创建多个具有不同优先级的工作线程的简单例子..............
java 排座位(线程优先级) java 排座位(线程优先级) java 排座位(线程优先级)
进程、线程和优先级 工作线程和用户界面线程 线程同步 线程通讯
首先说明Android的CPU分配的最小单元是线程,Handler一般是在某个线程里创建的,因而Handler和Thread就是相互绑定的,一一对应。 而Runnable是一个接口,Thread是Runnable的子类。所以说,他俩都算一个进程。 ...
activity生命周期、线程优先级、异常销毁、任务栈 参考代码