摘要: 1.引子 并发编程中使用HashMap可能导致程序死循环。因为多线程会put方法添加键值对时将导致HashMap的Entry链表形成环形数据结构,一旦形成环形数据结构,Entry的next节点永远不为空,就会产生死循环获取Entry。 另外Hashtable只是简单地使用阻塞式锁(synchroni 阅读全文
posted @ 2020-02-27 23:45 蜀中孤鹰 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 1.引子 "HashMap"由“hash”和“map"两个单词组成,这里的”map"表示“映射”而不是“地图”的意思,两个单词连起来就是“哈希映射表”。Map是一个接口,它有TreeSet 、LinkedHashMap、EnumMap、HashMap等实现类,其中HashMap无疑最重要也很复杂的一 阅读全文
posted @ 2020-02-21 22:56 蜀中孤鹰 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 1.简介 并发中常用的ReentrantLock,是一种典型的排他锁,这类锁在同一时刻只允许一个线程进行访问,实际上将并行操作变成了串行操作。在并发量大的业务中,其整体效率、吞吐量不能满足实现的需要。而且实际的业务中一般情况是读多于写,多个线程读操作不会改变已经有的数据,不会有数据的一致性问题,而一 阅读全文
posted @ 2020-02-15 00:57 蜀中孤鹰 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 1.引子 "ReentrantLock"单词中的“Reentrant”就是“重入”的意思,正如其名,ReentrantLock是一个支持重入的排他锁,即同一个线程中可以多次获得同步状态,常表现为lock()方法的嵌套使用(类似于synchronized代码类嵌套),而在AQS类注释的使用说明中的Mu 阅读全文
posted @ 2020-02-09 22:20 蜀中孤鹰 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 1.代码逻辑不清晰 origin CommerceItem mergeItem = null; List items = getNgpCartModifierFormHandler().getOrder().getCommerceItemsByCatalogRefId(baseCommItem.ge 阅读全文
posted @ 2020-02-02 20:54 蜀中孤鹰 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 1 引子 Java中没有指针,不能直接对内存地址的变量进行控制,但Java提供了一个特殊的类Unsafe工具类来间接实现。Unsafe主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很 阅读全文
posted @ 2020-01-23 10:12 蜀中孤鹰 阅读(1017) 评论(0) 推荐(0) 编辑
摘要: 1.引子 任意一个Java对象,都拥有一组监视器方法(定义在java.lang.Object上),主要包括wait()、wait(long timeout)、notify()以及notifyAll()方法,这些方法与synchronized同步关键字配合,可以实现等待/通知模式,这种实现主要体现在在 阅读全文
posted @ 2020-01-20 21:43 蜀中孤鹰 阅读(518) 评论(0) 推荐(0) 编辑
摘要: 性能优化是个大筐,很多东西都能往里面装。虽说性能优化的具体方面比较多,但万丈高楼从地起,这里还是从Java最基本的一些入门知识相关的使用优化进行一些做些总结和建议。如何连最基本的API使用都不会,或不会选择更高效的使用方式,那么Java的性能优化就是空谈,就更别提JVM优化 、Web优化这些更高级的 阅读全文
posted @ 2020-01-19 23:47 蜀中孤鹰 阅读(510) 评论(0) 推荐(0) 编辑
摘要: 1.引子 Lock接口的主要实现类ReentrantLock 内部主要是利用一个Sync类型的成员变量sync来委托Lock锁接口的实现,而Sync继承于AbstractQueuedSynchronizer,且大多数java.util.concurrent包下的并发工具类都是利用AbstractQu 阅读全文
posted @ 2020-01-13 22:33 蜀中孤鹰 阅读(641) 评论(0) 推荐(1) 编辑
摘要: 1.引子 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源,解决数据的一致性问题。在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的,而Java SE 5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了 阅读全文
posted @ 2020-01-13 22:03 蜀中孤鹰 阅读(625) 评论(0) 推荐(0) 编辑