并发和多线程
文章平均质量分 79
doraeimo
这个作者很懒,什么都没留下…
展开
-
jvm线程状态的流转
最初是有这样一个疑问:“使用concurrent包里的lock和传统的synchronized相比,等在同步块之外的线程处于一样的状态吗?是blocked还是waiting?”看图说话:因为lock的实现往往是通过LockSupport.park()方法,因此结论是:传统synchro块:blcokedlock:waitting两者有什么区别呢?wait原创 2013-01-14 13:55:29 · 1450 阅读 · 0 评论 -
concurrent包中Lock相关的知识点整理
之前看过一些多线程的东西,今天温习了一下,阅读了Java Concurrent Programming 第四节 锁 又回顾了线程状态的流转,整理如下:与锁相关的切入点:Lock和Condition。Lock是一个接口,它提供了上锁(lock)和解锁(unlock)等抽象方法;concurrent包里提供了许多不同策略的锁的实现,使用它们是为了较传统的synchronized同步块而言,原创 2012-09-10 10:01:37 · 893 阅读 · 0 评论 -
无锁队列的实现 小结
原文见 cool shell http://coolshell.cn/articles/8239.htmlCAS,即lock-free的一种实现,是构成jdk concurrent包高效并发容器的重要基础,因此认真阅读了一下。读后附注对ABA问题的理解:在DB里,根据一行记录中“最后修改时间”字段的值是否变更,作为更新该行记录时的参照物,是平时常见的一种做法原创 2012-09-07 16:00:49 · 667 阅读 · 0 评论 -
初步理解AQS
摘要AQS全称AbstractQueuedSynchronizer,它是concurrent包中最重要的基础设施类之一,负责作为模板类向业务层提供对临界区的管理。本文以FutureTask的实现机制作为引子,介绍了AQS的业务背景和设计思路,最后梳理了AQS的代码实现。目录摘要.................................................原创 2013-12-03 16:16:10 · 6330 阅读 · 0 评论 -
深入理解java内存模型
原文见 http://ifeve.com/java-memory-model-0/文章讲得很细致了,关键几点:1、原来只知道重排序是编译时(编译器行为)和运行时(虚拟机行为)产生的,目的是提高性能;此文交代了运行时重排序是由于cpu写缓冲出于性能考量没有及时刷到内存,导致事实上的重排序。cpu多级缓存之于内存,就像内存之于硬盘。扩展阅读:http://faculty.kfupm.edu转载 2013-11-13 15:46:19 · 864 阅读 · 0 评论