摘要: CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 闭锁可以延迟线程的进度直到其到达终止状态,闭锁可以用来确保某些活动直到其他活动都完成才继续执行: 确保某个计算在其需要的所有资源都被初始化之后才继续执行; 确保某个服务在其依赖的所有 阅读全文
posted @ 2017-02-14 01:17 chunfulandu 阅读(276) 评论(0) 推荐(0) 编辑
摘要: ConcurrentHashMap Java5在java.util.concurrent包中提供了多种并发容器类来改进同步容器的性能。其中应用最为广泛的为ConcurrentHashMap,ConcurrentHashMap是一个线程安全的hash表。对于多线程的操作,介于HashMap和HashT 阅读全文
posted @ 2017-02-14 00:28 chunfulandu 阅读(1715) 评论(0) 推荐(0) 编辑
摘要: 原子变量 为了引出原子变量这个概念,我们先看一个例子。 程序运行结果如下: 从程序运行结果可以看出,Thread-4和Thread-6执行结果都为2,明显发生了线程安全问题,当然,这种情况是偶然的。那么,出现这种问题的原因是什么呢? 如果你对j = i++;底层是如果实现的,那么这个问题就好理解了。 阅读全文
posted @ 2017-02-13 03:26 chunfulandu 阅读(1398) 评论(0) 推荐(0) 编辑
摘要: 前言 首先,我们使用多线程的目的在于提高程序的效率,但是如果使用不当,不仅不能提高效率,反而会使程序的性能更低,因为多线程涉及到线程之间的调度、CPU上下文的切换以及包括线程的创建、销毁和同步等等,开销比单线程大,因此需谨慎使用多线程。 在jdk1.5以后,提供了一个强大的java.util.con 阅读全文
posted @ 2017-02-13 02:08 chunfulandu 阅读(4946) 评论(0) 推荐(1) 编辑
摘要: 为何要自定义session扫描器 由于服务器来管理session的销毁不怎么靠谱,因此很多网站都会自己定义一个session扫描器来管理session的创建和销毁。 实现思路 首先,创建一个session扫描器类SessionScanner,然后继承HttpSessionListener,在sess 阅读全文
posted @ 2017-01-16 01:09 chunfulandu 阅读(532) 评论(2) 推荐(1) 编辑