摘要: 注:文章示例由上而下,安全级别越高。 示例1. 问题是:HashMap 不是线程安全的,因此采用的是将compute方法进行同步。但是这样只能保证每次只有一个线程执行compute方法,有明显的可伸缩性问题。 示例2. 示例2问题在于:如果某个线程启动了一个开销很大的计算,而其他线程并不知道这个计算 阅读全文
posted @ 2017-01-09 18:56 孟凡柱的专栏 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 前言在平时开发、测试过程中、甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序有严重的问题。我们需要找造成OutOfMemoryError原因。一般有两种情况: 1、内存泄露,对象已经死了,无法通过垃圾收集器进行自动回收,通过找出泄露的代码位置和原因,才好确定 阅读全文
posted @ 2017-01-09 14:36 孟凡柱的专栏 阅读(7189) 评论(0) 推荐(0) 编辑
摘要: 先谈谈闭锁和栅栏的区别: 1.关键区别在于,所有线程必须同时到达栅栏位置,才能继续执行。 2.闭锁用于等待某一个事件的发生,举例:CountDownLatch中await方法等待计数器为零时,所有事件才可继续执行。而栅栏是等待其他线程到位,所有事件才可继续下一步。例如:几个家庭决定在某个地方集合:“ 阅读全文
posted @ 2017-01-09 14:27 孟凡柱的专栏 阅读(325) 评论(0) 推荐(0) 编辑