![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
盘码客、汤勺
让技术无死角,从技术打桩开始
展开
-
并发编程-锁的那些事儿【六:Java线程的生命周期】
前言 今天这篇我们需要来了解下Java的线程, 在前几篇里面我们总是会提到这么几个词: “用户态”,“内核态”。。。 这些到底啥,而且为啥跟加锁以及性能会扯上关系呢? 其实很简单,对于并发编程来说,说白就是线程之间的通信,如果能够让线程间做的“分工”,“协作”,“互斥”,那么一定意义上就可以实现并发。 但线程不是人呀,人是一种高等生物,咱们的大脑可以做出随意应变的思考,但想要线程协同做事,那么...原创 2019-11-01 14:35:32 · 169 阅读 · 0 评论 -
并发编程-锁的那些事儿【五:死锁,活锁,饥饿锁,锁优化】
前言 经过前面几篇锁特性原理了解后,在面向实际使用场景会产生的问题,进行更深一步学习和解刨; 在前面的例子,都是用在synchronize关键字进行讲述,那么大家思考一个问题,在 中提到 “受保护资源和锁之间的关联关系是 N:1 的关系”,也就意味着一把锁可以同时锁住很多个资源; 那么对应到平常项目中,岂不是高度的串行化执行。 这样的性能肯定是不可以接受的。 所以这时有引出来一个新的名词“细粒度...原创 2019-10-31 17:46:45 · 425 阅读 · 0 评论 -
并发编程-锁的那些事儿【四:理解原子性,议Java如何保证原子产生的问题】
前言 在前面章节,全面概括了并发三大特性,其中可见、有序性还是较为容易理解,并在前面章节都有对其做过场景理解说明,此篇单独对原子性做场景理解; 原子性特性 把一个或者多个操作在 CPU 执行的过程中不被中断的特性;Java内存模型中,直接保证了原子性变量操作【read,load,use,assign,store,wirte】,在应用中,可以大致认定基本类型操作读写具备原子性的,除了【long,do...原创 2019-10-12 17:20:22 · 228 阅读 · 0 评论 -
并发编程-锁的那些事儿【三:发行发生原则-Happens-Before】
前言 经过前几篇Java内存模型与三大特性了解后,还需要掌握另一中比较苦涩难懂的一块规则:发行发生原则。 如果Java中的有序性,均通过volatile synchronize等方式控制,那么有些场景下有些代码会有些繁琐。 但在开发中,我们并没有这种感觉,正是这个 发行发生原则 在 默默起作用;这个规则十分重要,数据是否存在竞争关系,线程是否安全,都是依靠这个规则来判定。 它真正要表达的是: 前面...原创 2019-10-12 17:19:06 · 153 阅读 · 1 评论 -
并发编程-锁的那些事儿【一:并发的本质-Java内存模型】
并发编程-锁的那些事儿【一:并发的本质-Java内存模型】 前言 时隔几周,今天我们正式进入并发编程的艺术之中, 在此我分享下指引我学习方向的书籍:《深入理解Java虚拟机》,《Java并发编程的艺术》,《Java并发编程实战》 按照上述顺序依次阅读; 真正开始接入并发这门艺术时,其实说难也不难,说简单也不简单。 对于已经“进去”人,他们可以抓住主要核心思想去理解,那么对于“没进去”的小白,可能...原创 2019-09-17 15:01:36 · 250 阅读 · 0 评论 -
并发编程-锁的那些事儿【二:Volatile - 三大特性[原子,有序,可见]】
在上篇并发编程-锁的那些事儿【一:并发的本质-Java内存模型】中了解到Java内存模型的构造,那么接着学习在上述的规则中,如何实现并发安全的; 从这里因为并发的三大特性[原子,有序,可见],可以说这是三个特性,组成了并发编程。 在最后在用Volatile来分析下; 并发三大特性[原子性,有序性,可见性] 原子性: 把一个或者多个操作在 CPU 执行的过程中不被中断的特性;Java内存模型中,...原创 2019-09-17 15:04:03 · 194 阅读 · 0 评论