package carpool.asyncRelayExecutor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import carpool.asyncTask.StoreSearchHistoryTask; import carpool.asyncTask.relayTask.EmailRelayTask; import carpool.asyncTask.relayTask.LetterRelayTask; import carpool.asyncTask.relayTask.NotificationRelayTask; import carpool.asyncTask.relayTask.SESRelayTask; import carpool.interfaces.PseudoAsyncTask; public class ExecutorProvider { private static final int threadPool_max_notifiaction = 15; private static final int threadPool_max_email = 10; private static final int threadPool_max_letter = 15; private static final int threadPool_max_sr = 10; private static final ExecutorService notificationExecutor = Executors.newFixedThreadPool(threadPool_max_notifiaction); private static final ExecutorService emailExecutor = Executors.newFixedThreadPool(threadPool_max_email); private static final ExecutorService letterExecutor = Executors.newFixedThreadPool(threadPool_max_letter); private static final ExecutorService srExecutor = Executors.newFixedThreadPool(threadPool_max_sr); public static void executeRelay (PseudoAsyncTask task){ RelayTaskExecutableWrapper executableTask = new RelayTaskExecutableWrapper(task); if (task instanceof NotificationRelayTask){ notificationExecutor.submit(executableTask); } else if (task instanceof SESRelayTask){ emailExecutor.submit(executableTask); } else if(task instanceof StoreSearchHistoryTask){ srExecutor.submit(executableTask); } else if (task instanceof LetterRelayTask){ letterExecutor.submit(executableTask); } } }