线程执行工具类

作者: AndroidXing | 来源:发表于2018-04-06 13:32 被阅读170次

在Android中经常会用到多线程开发,最简单的做法是new一个Thread去执行,这种写法如果多的话,线程的创建和管理开销也是非常大的,在代码中lint也会有警告提示。现在介绍一个简洁的线程管理工具类。
代码如下:


import android.os.Handler;
import android.os.Looper;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class TaskService {

    private static volatile TaskService sTaskService;
    private final ExecutorService mExecutorService;
    private final Handler mHandler;


    private TaskService(){
        mExecutorService = Executors.newCachedThreadPool();
        mHandler = new Handler(Looper.getMainLooper());
    }

    public static TaskService getInstance(){
        if(sTaskService==null){
            synchronized (TaskService.class){
                if(sTaskService==null){
                    sTaskService = new TaskService();
                }
            }
        }
        return sTaskService;
    }

    public void doBackTask(Runnable runnable){
        if(runnable!=null){
            mExecutorService.submit(runnable);
        }
    }

    public void doBackTaskDelay(final Runnable runnable, long delay){
        if(runnable!=null){
            if(delay<0){
                delay = 0;
            }
            mHandler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    mExecutorService.submit(runnable);
                }
            },delay);
        }
    }

    public void postTaskInMain(Runnable runnable){
        if(runnable!=null){
            mHandler.post(runnable);
        }
    }

    public Handler getHandler(){
        return mHandler;
    }
}

该工具类采用单例的实现方式,线程执行是用Executors.newCachedThreadPool()方式实现线程复用。
使用方式:

  1. 开线程执行任务:
 TaskService.getInstance().doBackTask(new Runnable())
  1. 切换到主线程执行任务:
TaskService.getInstance().postTaskInMain(new Runnable());
  1. 延时执行多线程任务:
TaskService.getInstance().doBackTaskDelay(new Runnable(),3000);

相关文章

  • 线程执行工具类

    在Android中经常会用到多线程开发,最简单的做法是new一个Thread去执行,这种写法如果多的话,线程的创建...

  • 一个多线程

    依赖 写一个工具类 使用多线程执行任务 测试

  • CountDownLatch的使用

    CountDownLatch是java中一个协调多线程的工具类,假如多线程在执行后,需要等待所有都执行完再执行下一...

  • 每日一结——CountDownLatch

    简介 CountDownLatch是一个同步工具类,它允许一个线程或多个线程一直在等待,直到其他线程执行完后再执行...

  • JAVA多线程-CountDownLatch计数器

    一、概述 CountDownLatch是一个同步工具类,它允许一个或多个线程等待其他线程执行完操作之后再继续执行。...

  • CountDownLatch

        CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。 ...

  • Android开发中,线程池工具类的封装与使用。

    一、线程池工具类 /** * 线程池工具类 * @author zhangjikai * 20190711 */ ...

  • Java多线程10 同步工具类CountDownLatch

    前言 CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如...

  • 17 CountDownLatch用法详解

    概念CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,...

  • CountDownLatch

    CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。什么...

网友评论

    本文标题:线程执行工具类

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