摘要: 对于一个web server来说,简单的单线程程序或者每任务每线程的程序都有自身的局限性或缺点。而线程池为线程管理提供了一个良好的实现。在java1.5后,java.util.concurrent提供了一个灵活的线程池实现,而其也是作为Executor框架的一部分。在现在的java类库中,任务执行的... 阅读全文
posted @ 2015-08-06 13:45 lntea 阅读(510) 评论(0) 推荐(0) 编辑
摘要: ##闭锁##闭锁(latch)是一种Synchronizer(Synchronizer是一个对象,它根据本身的状态调节线程的控制流)。它可以延迟线程的执行进度直到到达终点状态。**一般用来确保特定活动直到其他的活动完成后才发生**。工作的原理就像一道大门,直到闭锁达到终点状态之前,门一直是关闭的,所... 阅读全文
posted @ 2015-07-30 18:29 lntea 阅读(237) 评论(0) 推荐(0) 编辑
摘要: ##并发容器#####ConcurrentHashMap###ConcurrentHashMap和HashMap一样是一个哈希表但是它使用不同的锁策略,提供更好的并发性和可伸缩性。在ConcurrentHashMap之前程序使用一个公共锁同步每一个方法,严格限制只能有一个线程同时访问容器。而Conc... 阅读全文
posted @ 2015-07-29 19:22 lntea 阅读(226) 评论(0) 推荐(0) 编辑
摘要: ##可见性##上一章中我们讨论过synchronized块可以阻塞执行以及确保操作执行中的原子化。因而往往存在这样一个误区,synchronized仅仅用来对操作进行原子化,设置操作执行的边界点。然而synchronized块还有一个重要的作用,内存可见性。简单的理解,即**一个线程修改了对象的状态... 阅读全文
posted @ 2015-07-29 16:51 lntea 阅读(3373) 评论(0) 推荐(0) 编辑
摘要: ##1.线程介绍##线程,也称为轻量级进程。大多数现代操作系统把线程作为时序调度的基本单元。多线程的出现给程序处理带来了很多新的方式,但同时线程的使用也存在着不少风险。###线程的优点###+ 多处理器的出现。程序调度的基本单元是线程,一个单线程应用程序一次只能运行在一个处理器上。因而多处理器的出现... 阅读全文
posted @ 2015-07-28 07:34 lntea 阅读(767) 评论(0) 推荐(0) 编辑
摘要: LZ目前正在做一个批量生成报表的系统,需要定时批量生成多张报表,便考虑使用线程池来完成。JDK自带的Executors工具类只提供创建固定线程和可伸展但无上限的两个静态方法,并不能满足LZ想自定制线程池大小的要求。于是就直接深入了解下ThreadPoolExecutor类,以方便在工作中灵活使用以及... 阅读全文
posted @ 2015-07-26 16:41 lntea 阅读(202) 评论(0) 推荐(0) 编辑