package com.anyun.im_lib;
|
|
import android.util.Log;
|
|
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.Executors;
|
|
/**
|
* MyApplication2
|
* Created by lzw on 2019/12/2. 14:15:59
|
* 邮箱:632393724@qq.com
|
* All Rights Saved! Chongqing AnYun Tech co. LTD
|
*/
|
public class ExecutorServiceFactory {
|
|
private static final String TAG = ExecutorServiceFactory.class.getSimpleName();
|
|
/*** 管理线程组,负责重连***/
|
private ExecutorService bossPool;
|
/*** 工作线程组,负责心跳***/
|
private ExecutorService workPool;
|
|
/**
|
* 初始化Boss线程池
|
*/
|
public synchronized void initBossLoopGroup(){
|
initBossLoopGroup(1);
|
}
|
|
/**
|
* 初始化work线程池
|
*/
|
public synchronized void initWorkLoopGroup(){
|
initWorkLoopGroup(1);
|
}
|
|
/**
|
* 执行Boss任务
|
* @param runnable
|
*/
|
public void execBossTask(Runnable runnable){
|
if (bossPool == null){
|
initBossLoopGroup();
|
}
|
Log.i(TAG, "execBossTask");
|
bossPool.execute(runnable);
|
}
|
/**
|
* 执行work任务
|
* @param runnable
|
*/
|
public void execWorkTask(Runnable runnable){
|
if (workPool == null){
|
initWorkLoopGroup();
|
}
|
workPool.execute(runnable);
|
}
|
|
private void initWorkLoopGroup(int size) {
|
destroyWorkLoopGroup();
|
workPool = Executors.newFixedThreadPool(size);
|
}
|
|
private void initBossLoopGroup(int size) {
|
destroyBossLoopGroup();
|
bossPool = Executors.newFixedThreadPool(size);
|
}
|
|
/**
|
* 释放boss线程池
|
*/
|
private void destroyBossLoopGroup() {
|
if (bossPool != null){
|
try {
|
bossPool.shutdownNow();
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
bossPool = null;
|
}
|
}
|
}
|
/**
|
* 释放work线程池
|
*/
|
public void destroyWorkLoopGroup() {
|
if (workPool != null){
|
try {
|
workPool.shutdownNow();
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
workPool = null;
|
}
|
}
|
}
|
|
/**
|
* 释放所有线程
|
*/
|
public void destroy() {
|
destroyBossLoopGroup();
|
destroyWorkLoopGroup();
|
}
|
}
|