package com.anyun.im_lib; 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 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(); } 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(); } }