package com.mom.pi.common; import org.apache.log4j.Logger; import java.util.HashMap; import java.util.concurrent.*; public class ThreadPool { private static ThreadPool threadPool; // private static AtomicInteger SyncImportCount = new AtomicInteger(0); private static ExecutorService executorService = Executors.newFixedThreadPool(5); private static final Logger logger = Logger.getLogger(ThreadPool.class); @SuppressWarnings("rawtypes") public static HashMap<String, FutureTask> futureTasks = new HashMap<String, FutureTask>(); private ThreadPool(){ }; public synchronized static ThreadPool getInstance() { if (threadPool == null) { logger.info("新建连接池"); threadPool = new ThreadPool(); } return threadPool; } public void exec(String key , FutureTask<?> futureTask) throws InterruptedException, ExecutionException{ futureTasks.put(key, futureTask); long start = System.currentTimeMillis(); executorService.submit(futureTask); long end = System.currentTimeMillis(); logger.info("执行所用时间"+(end-start) / 1000.0+"ms"); } public <T> Future<T> exec(String key , Callable<T> callAble) throws InterruptedException, ExecutionException{ return executorService.submit(callAble); } public void exec(Runnable threat) throws InterruptedException, ExecutionException{ long start = System.currentTimeMillis(); executorService.execute(threat); long end = System.currentTimeMillis(); logger.info("执行所用时间"+(end-start) / 1000.0+"ms"); } @SuppressWarnings("rawtypes") public boolean queryStatus(String key) throws InterruptedException, ExecutionException{ FutureTask futureTask = futureTasks.get(key); while(true){ if(futureTask.isDone()){ break; } } return futureTask.isDone(); } @SuppressWarnings("rawtypes") public Object queryResult(String key) throws InterruptedException, ExecutionException{ FutureTask futureTask = futureTasks.get(key); while(true){ if(futureTask.isDone()){ futureTasks.remove(key); break; } } return futureTask.get(); } }
多线程连接池
最新推荐文章于 2024-09-15 13:12:34 发布