摘要:
在理解J.U.C原理以及锁机制之前,我们来介绍J.U.C框架最核心也是最复杂的一个基础类:java.util.concurrent.locks.AbstractQueuedSynchronizer。 AQS AbstractQueuedSynchronizer,简称AQS,是J.U.C最复杂的一个类 阅读全文
posted @ 2018-05-25 15:13
白露~
阅读(344)
评论(0)
推荐(0)
摘要:
在理解J.U.C原理以及锁机制之前,我们来介绍J.U.C框架最核心也是最复杂的一个基础类:java.util.concurrent.locks.AbstractQueuedSynchronizer。 AQS AbstractQueuedSynchronizer,简称AQS,是J.U.C最复杂的一个类 阅读全文
posted @ 2018-05-25 15:13
白露~
阅读(344)
评论(0)
推荐(0)
摘要:
前面的章节主要谈谈原子操作,至于与原子操作一些相关的问题或者说陷阱就放到最后的总结篇来整体说明。从这一章开始花少量的篇幅谈谈锁机制。 上一个章节中谈到了锁机制,并且针对于原子操作谈了一些相关的概念和设计思想。接下来的文章中,尽可能的深入研究锁机制,并且理解里面的原理和实际应用场合。 尽管synchr 阅读全文
posted @ 2018-05-25 15:03
白露~
阅读(313)
评论(0)
推荐(0)
摘要:
在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁(后面的章节还会谈到锁)。 锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 (2)一个线程持有锁会导致其它所有需要此锁的线程挂起。 (3)如果一个优先级高 阅读全文
posted @ 2018-05-25 14:52
白露~
阅读(495)
评论(0)
推荐(0)
摘要:
在这个小结里面重点讨论原子操作的原理和设计思想。 由于在下一个章节中会谈到锁机制,因此此小节中会适当引入锁的概念。 在Java Concurrency in Practice中是这样定义线程安全的: 当多个线程访问一个类时,如果不用考虑这些线程在运行时环境下的调度和交替运行,并且不需要额外的同步及在 阅读全文
posted @ 2018-05-25 14:46
白露~
阅读(351)
评论(0)
推荐(0)
摘要:
在这一部分开始讨论数组原子操作和一些其他的原子操作。 AtomicIntegerArray/AtomicLongArray/AtomicReferenceArray的API类似,选择有代表性的AtomicIntegerArray来描述这些问题。 int get(int i) 获取位置 i 的当前值。 阅读全文
posted @ 2018-05-25 14:44
白露~
阅读(271)
评论(0)
推荐(0)
摘要:
从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包,而Queue,很多情况下使用到了Atomic操作,因此首先从这里开始)。很多情况下我们只是需要一个简单的、高效的、线程安全的递增递减方案。注意,这里有三个条件:简单,意味着程序员尽可能少的操作底层或者实现 阅读全文
posted @ 2018-05-25 14:37
白露~
阅读(325)
评论(0)
推荐(0)
摘要:
深入浅出 Java Concurrency (1) : J.U.C的整体认识 去年年底有一个Guice的研究计划,可惜由于工作“繁忙”加上实际工作中没有用上导致“无疾而终”,最终只是完成了Guice的初步学习教程,深入的研究没有继续进行下去。 最近一直用的比较多的就是java.util.concur 阅读全文
posted @ 2018-05-25 14:28
白露~
阅读(2425)
评论(0)
推荐(1)
摘要:
一、同步容器 主要代表有Vector和Hashtable,以及Collections.synchronizedXxx等。 锁的粒度为当前对象整体。 迭代器是及时失败的,即在迭代的过程中发现被修改,就会抛出ConcurrentModificationException。 二、并发容器 主要代表有Con 阅读全文
posted @ 2018-05-25 11:06
白露~
阅读(199)
评论(0)
推荐(0)
摘要:
原文地址: http://www.cnblogs.com/dolphin0520/p/3910667.html 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程。当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够融会贯通使用的,需要在实践中不断积 阅读全文
posted @ 2018-05-24 16:44
白露~
阅读(213)
评论(0)
推荐(0)
摘要:
原文链接: http://www.cnblogs.com/dolphin0520/p/3920385.html 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必 阅读全文
posted @ 2018-05-24 14:34
白露~
阅读(291)
评论(0)
推荐(0)
|