package com.hqyg.disjob.common.thread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
import com.hqyg.disjob.quence.Executor;
public final class ExecutorFactory {
private static Executor executor = null;
public static Executor executeStateExecutor = null;
public static void offerExecutor(Executor executor) {
ExecutorFactory.executor = executor;
}
/**
* 调度一个job 时 并发去掉。提高吞吐量
* @return
*/
public static Executor getExecutor() {
return ExecutorFactory.executor;
}
/**
*
* @return
*/
public static Executor getExecuteStateExecutor() {
return executeStateExecutor;
}
/**
* 接收 服务端返回的消息,专门用一个线程池去处理
* @param executeStateExecutor
*/
public static void offerExecuteStateExecutor(Executor executeStateExecutor) {
ExecutorFactory.executeStateExecutor = executeStateExecutor;
}
private static ScheduledExecutorService schedulerService = ThreadPoolBuilder.getInstance().builderSchedulerThreadPool();
public static ScheduledExecutorService getScheduledExecutorService(){
return schedulerService;
}
private static ExecutorService signalThreadPoolService = ThreadPoolBuilder.getInstance().builderSingleThreadExecutor();
public static ExecutorService getSignalThreadPoolService(){
return signalThreadPoolService;
}
/**
* submit rpc thread pool
*/
private static Executor submitRpcExecutor = null;
public static void setSubmitRpcExecutor(Executor executor){
if(submitRpcExecutor == null){
synchronized (ExecutorFactory.class) {
if(submitRpcExecutor == null){
submitRpcExecutor = executor;
}
}
}
}
public static Executor getSubmitRpcExecutor(){
return submitRpcExecutor;
}
}