ThreadPoolExecutor和Android的线程优先级

阿德夫

我想制作一个ThreadPollExecutor来执行具有给定优先级Process.setThreadPriority(int)的任务

我该怎么办?在发送到线程轮询的每个可运行对象的开头添加对setThreadPriority的调用?我还考虑过使用这样的自定义线程工厂:

private final static class ProcessPriorityThreadFactory implements ThreadFactory {

    private final int threadPriority;

    public ProcessPriorityThreadFactory(int threadPriority) {
        super();
        this.threadPriority = threadPriority;
    }

    @Override
    public Thread newThread(Runnable r) {
        return new Thread(new PriorityChangeWrapper(r, threadPriority));
    }

    private final static class PriorityChangeWrapper implements Runnable {
        private final Runnable originalRunnable;
        private final int threadPriority;

        public PriorityChangeWrapper(Runnable originalRunnable, int threadPriority) {
            super();
            this.originalRunnable = originalRunnable;
            this.threadPriority = threadPriority;
        }

        @Override
        public void run() {
            Process.setThreadPriority(threadPriority);
            originalRunnable.run();
        }

    }

}

解决此问题的最佳方法是什么?谢谢

B队

您的问题中给出的自定义工厂是执行此操作的正确方法。出于这种原因,使用了出厂模式,因为它可以使您完全控制由所创建的所有线程ExecutorService(例如,您也可以更改线程名称等)。

但是,工厂的实现比所需的要复杂得多,您需要做的是:

private final static class ProcessPriorityThreadFactory implements ThreadFactory {

    private final int threadPriority;

    public ProcessPriorityThreadFactory(int threadPriority) {
        this.threadPriority = threadPriority;
    }

    @Override
    public Thread newThread(Runnable r) {
        Thread thread = new Thread(r);
        thread.setPriority(threadPriority);
        return thread;
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ThreadPoolExecutor和Android的线程优先级

来自分类Dev

Windows 7中的进程和线程优先级

来自分类Dev

线程调度优先级和良好性

来自分类Dev

Java-线程优先级和套接字

来自分类Dev

限制Gradle / Android Studio构建的优先级/线程?

来自分类Dev

提高asio优先级和优先级

来自分类Dev

优先级队列多线程

来自分类Dev

设置CoreData NSManagedObjectContext线程优先级

来自分类Dev

优先级最低的线程被调用多次

来自分类Dev

在C中设置线程优先级

来自分类Dev

Java多线程优先级

来自分类Dev

为什么线程优先级无效?

来自分类Dev

设置线程Java的优先级

来自分类Dev

Java中的线程优先级

来自分类Dev

在C中设置线程优先级

来自分类Dev

优先级最低的线程被调用多次

来自分类Dev

线程产生的内核操作的优先级

来自分类Dev

优先级队列多线程

来自分类Dev

线程优先级,意外输出

来自分类Dev

较低优先级的线程似乎会阻塞较高优先级的线程?

来自分类Dev

C ++和boost :: threads-如何根据工作类型确定线程的优先级?

来自分类Dev

默认调度策略和新QNX进程/线程的优先级

来自分类Dev

Producer-Consumer程序中的线程优先级-wait()和notify()

来自分类Dev

.NET线程是否从创建线程继承其优先级?

来自分类Dev

按钮单击和命令优先级

来自分类Dev

转到:并发和优先级排序

来自分类常见问题

优先级和位掩码操作

来自分类Dev

@PreAuthorize和拦截URL优先级

来自分类Dev

优先级队列和Prim算法