package com.revolsys.parallel; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import com.revolsys.collection.map.ThreadSharedProperties; public class ExecutorServiceFactory { private static final String KEY = ExecutorServiceFactory.class.getName() + ".key"; private static final Object SYNC = new Object(); public static ExecutorService getExecutorService() { synchronized (SYNC) { ExecutorService executorService = ThreadSharedProperties.getProperty(KEY); if (executorService == null) { executorService = Executors.newCachedThreadPool(); ThreadSharedProperties.setDefaultProperty(KEY, executorService); } return executorService; } } public static void setDefaultExecutorService(final ExecutorService executorService) { ThreadSharedProperties.setDefaultProperty(KEY, executorService); } public static void setThreadExecutorService(final ExecutorService executorService) { ThreadSharedProperties.setProperty(KEY, executorService); } }