美文网首页Android性能优化专项Android安卓基础
Android实现具有优先级的线程池

Android实现具有优先级的线程池

作者: 在岁月中远行 | 来源:发表于2022-05-27 00:22 被阅读0次

在安卓开发中为了复用线程以及节约线程开销,线程池是一种比较多的方法,有时也会有这样的需求,不同的线程执行任务的紧急程度不一样的,加入线程池的任务可能需要优先处理,在ThreadPoolExector的构造函数需要传递一个继承BlockQueue的子类。

在SDK中已经提供一个PriorityBlockQueue这样的优先级阻塞队列,我们要的就是扩展Runnable,添加一个优先级的属性

然后就是为PriorityBlockungQueue的构造函数第二个参数,继承Comparator实现一个比较优先级的类

后面我们写主要代码

exe.execute(new RunWithPriority(31) {

@Override

    public void run() {

Log.d("tanlinstarted",this.getPriority() +" started");

        try {

Thread.sleep(3000);

        }catch (InterruptedException ex) {

}

Log.d("tanlin",this.getPriority() +" finished");

    }

});

exe.execute(new RunWithPriority(45) {

@Override

    public void run() {

Log.d("tanlinstarted",this.getPriority() +" started");

        try {

Thread.sleep(3000);

        }catch (InterruptedException ex) {

}

Log.d("tanlin",this.getPriority() +" finished");

    }

});

exe.execute(new RunWithPriority(77) {

@Override

    public void run() {

Log.d("tanlinstarted",this.getPriority() +" started");

        try {

Thread.sleep(3000);

        }catch (InterruptedException ex) {

}

Log.d("tanlin",this.getPriority() +" finished");

    }

});

exe.execute(new RunWithPriority(7) {

@Override

    public void run() {

Log.d("tanlinstarted",this.getPriority() +" started");

        try {

Thread.sleep(3000);

        }catch (InterruptedException ex) {

}

Log.d("tanlin",this.getPriority() +" finished");

    }

});

exe.execute(new RunWithPriority(1) {

@Override

    public void run() {

Log.d("tanlinstarted",this.getPriority() +" started");

        try {

Thread.sleep(3000);

        }catch (InterruptedException ex) {

}

Log.d("tanlin",this.getPriority() +" finished");

    }

});

可以从日志看出来前面优先级99和10这两个是核心线程

后面的线程加入队列进行排序按照优先级数值越小,越执行早。

首先线程池的调度是,系统Cpu利用时间碎片随机去调度的。我们的设置的只能尽可能的去满足,按照优先级去执行,但不能100%保证。

相关文章

  • Android实现具有优先级的线程池

    在安卓开发中为了复用线程以及节约线程开销,线程池是一种比较多的方法,有时也会有这样的需求,不同的线程执行任务的紧急...

  • 具有优先级的线程池

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/russle/a...

  • Android ThreadPoolExecutor线程池

    引言 Android的线程池概念来自于Java的Executor,真正的线程池实现为ThreadPoolExecu...

  • Android的线程池

    Android中的线程池来源于Java中的Executor接口,真正的线程池实现为ThreadPoolExecut...

  • 线程池

    线程池简介: android提供了四种线程池,都是由直接或简介配置ThreadPoolExecutor来实现的。 ...

  • 线程池

    1. Android中的线程池有哪些,它们的区别是什么? ThreadPoolExecutor是线程池的真正实现,...

  • Android 线程池相关知识

    Android中的线程池都是之间或间接通过配置ThreadPoolExecutor来实现不同特性的线程池.Andr...

  • Android 线程池的相关知识

    Android中的线程池都是直接或间接通过配置ThreadPoolExecutor来实现不同特性的线程池.Andr...

  • [笔记]Java多线程概略

    线程的定义和状态 创建、就绪、运行、阻塞、停止 线程优先级 线程优先级的系统规则线程是具有优先级的,高优先级的线程...

  • Android中的线程池总结

    Android中的线程池的概率来源于Java中的Executor,然真正实现线程池的是ThreadPoolExec...

网友评论

    本文标题:Android实现具有优先级的线程池

    本文链接:https://www.haomeiwen.com/subject/hptmprtx.html