直接上代码了
public class ThreadPoolUtils {
private static final int NUMBER =1; //定义线程池中的数量
private static ThreadPoolExecutorexecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(NUMBER);
private static int count =0; //计数器
private static LinkedListlinkedList =new LinkedList();
/**
* 判断当前线程池里面是否有线程在执行
*
* @return
*/
public static void startThread(Thread thread) {
if (count <1) {
count++;
executor.execute(thread); //执行线程池中的线程
}else {
linkedList.add(thread);
}
}
/**
* 工作线程
*/
public static abstract class Threadimplements Runnable {
@Override
public void run() {
//语音播报
work(); //这里实现 你要实现线程方法
//计数器--
MyAPP.getHandler().post(new Runnable() {
@Override
public void run() {
Thread thread =linkedList.pollFirst();
if (thread !=null) {
startThread(thread);
}
count--;
}
});
}
//语音播报的方法 谁用谁调用
public abstract void work();
}
然后写一个类实现 线程方法
public class YuYin extends ThreadPoolUtils.Thread {
@Override
public void work() {
try {
Thread.sleep(2000); //模拟耗时操作
}catch (InterruptedException e) {
e.printStackTrace();
}
//语音播报
Log.d("11", "dsfsadfds");
}
}
网友评论