Java线程池之newFixedThreadPool的示例分享
下文笔者讲述newFixedThreadPool的使用示例分享,如下所示
Java可创建线程池的对象
Java对外提供Executors四种线程池,如下所示: newCachedThreadPool: 可创建一个可缓存线程池 当线程池长度超过处理需要 可灵活回收空闲线程 若无可回收,则新建线程 newFixedThreadPool: 可创建一个定长线程池 可控制线程最大并发数 超出的线程会在队列中等待 newScheduledThreadPool: 可创建一个定长线程池 支持定时及周期性任务执行 newSingleThreadExecutor: 可创建一个单线程化的线程池 只会用唯一的工作线程来执行任务 保证所有任务按照指定顺序(FIFO, LIFO, 优先级)运行例:newFixedThreadPool创建线程池对象的示例分享
public class ThreadTask { private static Logger log = LoggerFactory.getLogger(ThreadTask.class); public void doMultiThread(int threadCount){ ExecutorService fixedThreadPool = Executors.newFixedThreadPool(threadCount); // 读取文件 list<File> fileList = FileUtil.loopFiles(CommonUtil.readProperties(CommonUtil.CONF,"path")); log.info("待处理总文件数量:" + fileList.size()); if(fileList.size() >0) { for (File file : fileList) { fixedThreadPool.execute(new Runnable() { @Override public void run() { log.info("处理文件,fileName=" + file.getName()); do(); } }); } fixedThreadPool.shutdown(); while (true){ try { Thread.sleep(20000); } catch (InterruptedException e) { e.printStackTrace(); } if(fileList.size() == totalMap.get("handlerNum")){ log.info("文件处理完,准备输出结果..."); do(); break; } } } } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。