摘要: private final BlockingQueue<Runnable> workQueue; //任务缓存队列,用来保存等待中的任务,等待worker线程空闲时执行任务 private final ReentrantLock mainLock = new ReentrantLock(); //更 阅读全文
posted @ 2019-01-22 13:43 沟渠映明月 阅读(116) 评论(0) 推荐(0) 编辑
摘要: BlockingQueue是双缓冲队列。BlockingQueue内部使用两条队列,允许两个线程同时向队列一个存储,一个取出操作。在保证并发安全的同时,提高了队列的存取效率。 1:当Queue为空时,获取元素线程被阻塞直到Queue变为非空; 2:当Queue满时,添加元素线程被阻塞直到Queue不 阅读全文
posted @ 2019-01-22 13:43 沟渠映明月 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 1. 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。 2. 阅读全文
posted @ 2019-01-22 13:42 沟渠映明月 阅读(198) 评论(0) 推荐(0) 编辑
摘要: newCachedThreadPool 重用之前的线程 适合执行许多短期异步任务的程序。 调用 execute() 将重用以前构造的线程 如果没有可用的线程,则创建一个新线程并添加到池中 默认为60s未使用就被终止和移除 长期闲置的池将会不消耗任何资源 重用之前的线程 适合执行许多短期异步任务的程序 阅读全文
posted @ 2019-01-22 13:41 沟渠映明月 阅读(151) 评论(0) 推荐(0) 编辑
摘要: Executor是一个简单的标准化接口,用于定义自定义线程类子系统,包括线程池,异步I / O和轻量级任务框架。根据正在使用的具体Executor类,任务可以在新创建的线程,现有任务执行线程或线程调用中execute执行,并且可以顺序执行或同时执行。 ExecutorService提供了更完整的异步 阅读全文
posted @ 2019-01-22 13:39 沟渠映明月 阅读(292) 评论(0) 推荐(0) 编辑