android 线程池 怎么用,android中的线程池 怎么用

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

qpierq0n5

2016.05.02

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:52%    等级:13

已帮助:8164人

//在Android中实现线程池,首先需要实现一个线程工厂(ThreadFactory)的子类,具体实现方式如下所示(PriorityThreadFactory.Java):

import android.os.Process;

/**

* A thread factory that create threads with a given thread priority

* @author jony

* @version 1.0

*/

public class PriorityThreadFactory implements ThreadFactory{

private final String mName;

private final int mPriority;

private final AtomicInteger mNumber = new AtomicInteger();

public PriorityThreadFactory(String name, int priority) {

mName = name;// 线程池的名称

mPriority = priority;//线程池的优先级

}

@Override

public Thread newThread(Runnable r) {

return new Thread(r, mName +"-"+mNumber.getAndIncrement()){

@Override

public void run() {

// 设置线程的优先级

Process.setThreadPriority(mPriority);

super.run();

}

};

}

}

//以上是创建线程池的一个工具类,接下来为大家介绍本篇文章的重点,线程池的实现方式,具体实现方式如下所示(MyThreadPool.java):

package com.tcl.actionbar;

import java.util.concurrent.ThreadFactory;

import java.util.concurrent.atomic.AtomicInteger;

package com.tcl.actionbar;

import java.util.concurrent.BlockingQueue;

import java.util.concurrent.Executor;

import java.util.concurrent.LinkedBlockingDeque;

import java.util.concurrent.ThreadPoolExecutor;

import java.util.concurrent.TimeUnit;

import java.util.concurrent.ThreadFactory;

// 线程池的实现方式

public class MyThreadPool {

private final static int POOL_SIZE = 4;// 线程池的大小最好设置成为CUP核数的2N

private final static int MAX_POOL_SIZE = 6;// 设置线程池的最大线程数

private final static int KEEP_ALIVE_TIME = 4;// 设置线程的存活时间

private final Executor mExecutor;

public MyThreadPool() {

// 创建线程池工厂

ThreadFactory factory = new PriorityThreadFactory("thread-pool", android.os.Process.THREAD_PRIORITY_BACKGROUND);

// 创建工作队列

BlockingQueue workQueue = new LinkedBlockingDeque();

mExecutor = new ThreadPoolExecutor(POOL_SIZE, MAX_POOL_SIZE, KEEP_ALIVE_TIME, TimeUnit.SECONDS, workQueue, factory);

}

// 在线程池中执行线程

public void submit(Runnable command){

mExecutor.execute(command);

}

}

//自己觉得这个·代码不错,我就只是将它搬了过来,实际代码地址:http://blog.youkuaiyun.com/weihan1314/article/details/7983725

00分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值