上一页 1 ··· 60 61 62 63 64 65 66 67 68 ··· 77 下一页
摘要: synchronized是重量级锁,效率不高。但在jdk 1.6中对synchronize的实现进行了各种优化,使得它显得不是那么重了。jdk1.6对锁的实现引入了大量的优化,如自旋锁、自适应自旋锁、锁消除、锁粗化等技术来减少锁操作的开销。 锁主要存在四中状态,依次是:无锁状态、偏向锁状态、轻量级锁 阅读全文
posted @ 2021-02-25 11:46 周文豪 阅读(815) 评论(0) 推荐(0)
摘要: Java内存模型就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。 Java内存模型是根据英文Java Memory Model(JMM)翻译过来的。其实JMM并不像JVM内存结构一样是真实存在的。他只是一个抽象 阅读全文
posted @ 2021-02-25 10:41 周文豪 阅读(872) 评论(0) 推荐(0)
摘要: 多线程死锁:同步中嵌套同步,导致锁无法释放。 死锁解决办法:不要在同步中嵌套同步 public class Demo06DeadLock { public static void main(String[] args) { //创建线程任务对象 Ticket ticket = new Ticket( 阅读全文
posted @ 2021-02-25 09:56 周文豪 阅读(94) 评论(0) 推荐(0)
摘要: 线程安全: 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的,反之则是线程不安全的。 卖票案例: public class Demo08 { public static void main(S 阅读全文
posted @ 2021-02-24 15:57 周文豪 阅读(144) 评论(0) 推荐(0)
摘要: ConcurrentHashMap通常只被看做并发效率更高的Map,用来替换其他线程安全的Map容器,比如 Hashtable和Collections.synchronizedMap。线程安全的容器,特别是Map,很多情况下一个业务中 涉及容器的操作有多个(读get写put,remove),即复合操 阅读全文
posted @ 2021-02-24 11:55 周文豪 阅读(403) 评论(0) 推荐(0)
摘要: 一、并发容器ConcurrentHashMap HashMap是我们用得非常频繁的一个集合,但是它是线程不安全的。并且在多线程环境下,put操作是有可能产生死循环,不过在JDK1.8的版本中更换了数据插入的顺序,已经解决了这个问题。 为了解决该问题,提供了Hashtable和Collections. 阅读全文
posted @ 2021-02-24 11:27 周文豪 阅读(5704) 评论(0) 推荐(0)
摘要: ConcurrentHashmap、HashMap和Hashtable都是key-value存储结构,但他们有一个不同点是 ConcurrentHashmap、Hashtable不支持key或者value为null,而HashMap是支持的。 为什么要这么设计? 在网上找到了这样的解答:The ma 阅读全文
posted @ 2021-02-22 17:42 周文豪 阅读(501) 评论(0) 推荐(0)
摘要: 需要,因为要重新计算旧数组元素在新数组地址。HashMap在JDK1.8中的rehash算法(也就是扩容后重新为里面的键值对寻址的算法)进行优化。hash寻址算法是 index =(n - 1) & hash 在JDK1.7的时候,是将数组扩容为两倍,然后将HashMap中所有的key重新进行has 阅读全文
posted @ 2021-02-22 16:51 周文豪 阅读(4764) 评论(0) 推荐(1)
摘要: 在当我们对HashMap初始化时没有设置初始化容量,系统会默认创建一个容量为16的大小的集合。当HashMap的容量值超过了临界值(默认16*0.75=12)时,HashMap将会重新扩容到下一个2的指数幂(16->32)。HashMap扩容将要进行resize的操作,频繁resize,会导致降低性 阅读全文
posted @ 2021-02-22 16:11 周文豪 阅读(1260) 评论(0) 推荐(0)
摘要: HashMap通过resize()方法进行扩容。 源码解析: resize()函数有两种使用情况: 一、当table数组为null时初始化hash表。 二、当table数组不为null时进行扩容。 1、如果table数组的容量超过最大容量时,无法扩容,直接返回旧的数组。并将threshold值设置为 阅读全文
posted @ 2021-02-22 15:57 周文豪 阅读(5953) 评论(0) 推荐(2)
上一页 1 ··· 60 61 62 63 64 65 66 67 68 ··· 77 下一页