音频应用

 找回密码
 快速注册

QQ登录

只需一步,快速开始

阅读: 42073|回复: 4

[资讯] android 设置线程的优先级

[复制链接]

3729

积分

2

听众

-596

音贝

音频应用新手发布

Rank: 3

积分
3729
发表于 2006-4-18 | |阅读模式
音频应用公众号资讯免费发布推广
有两处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种方法)设置的优先级,对线程调度影响显著。

=====================
测试代码如下:
=====================
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());
        }
    }
}
欢迎厂家入驻,推文!免费!微信:yinpinyingyong

3729

积分

2

听众

-596

音贝

音频应用新手发布

Rank: 3

积分
3729
 楼主| 发表于 2006-4-20 |
点赞了,谢谢楼主发布啊
欢迎厂家入驻,推文!免费!微信:yinpinyingyong

3万

积分

8

听众

-3309

音贝

音频应用初级会员

Rank: 6Rank: 6

积分
35814
发表于 2006-4-20 |
分享了,谢谢楼主发布啊
欢迎厂家入驻,推文!免费!微信:yinpinyingyong

1万

积分

2

听众

-1039

音贝

音频应用注册会员

Rank: 4Rank: 4

积分
11470
发表于 2006-4-20 |
支持!
欢迎厂家入驻,推文!免费!微信:yinpinyingyong

3万

积分

6

听众

-3702

音贝

音频应用初级会员

Rank: 6Rank: 6

积分
39500
发表于 2006-4-20 |
支持一下!
欢迎厂家入驻,推文!免费!微信:yinpinyingyong
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

音频应用搜索

小黑屋|手机版|音频应用官网微博|音频招标|音频应用 (鄂ICP备16002437号)

Powered by Audio app

快速回复 返回顶部 返回列表