package com.norteksoft.product.util; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class ThreadPool { private static ThreadPoolExecutor producerPool; static{ // 构造一个线程池 producerPool = new ThreadPoolExecutor(Integer.parseInt(readPropertiesFile("thread.corePoolSize")), Integer.parseInt(readPropertiesFile("thread.maximumPoolSize")), Long.parseLong(readPropertiesFile("thread.keepAliveTime")), TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(Integer.parseInt(readPropertiesFile("thread.workQueueNum"))), new ThreadPoolExecutor.DiscardOldestPolicy()); } /** * @param task */ public static void execute(Runnable task) { producerPool.execute(task); } private static String readPropertiesFile(String key){ InputStream in = ThreadPool.class.getClassLoader().getResourceAsStream("threadConfig.properties"); Properties props = new Properties(); try { props.load(in); } catch (IOException e) { new RuntimeException("threadConfig.properties load fielded."); } final String value = props.getProperty(key); return value; } }