Java并发编程
gcl272633743
伐木累
展开
-
java并发编程之1——synchronized和volatile
总的来说synchronized主要是解决线程互斥性问题,volatitle主要是解决线程可见性的问题。synchronized 1 synchronized的线程安全性 2 synchronized的变量可见性 3 对象锁volatile原创 2016-05-12 20:11:17 · 440 阅读 · 0 评论 -
Java并发编程之2——同步工具类的使用(CountDownLatch,CyclicBarrier,BlockungQueue,Semaphore)
为了简化线程同步与互斥的相关操作JDK,提供了大约4中同步与互斥的工具类: 闭锁(Latch),栅栏(Barrier),阻塞队列(BlockingQueue),信号量(semaphore),1 闭锁(CountDownLatch)2 栅栏(CyclicBarrier)3 阻塞队列(BlockingQueue)4 信号量(Semaphore)1 闭锁(Coun原创 2016-05-13 12:04:57 · 541 阅读 · 0 评论 -
java并发编程之3——Java锁的分析
在分析java的锁之前首先解释一下JVM对的内存分配模型 1 JVM内存模型 JVM的内存公分为5个部分,主要包括: 1 方法区 2 堆 3 栈原创 2016-05-13 20:03:05 · 281 阅读 · 0 评论 -
java并发编程之4——Java锁分解锁分段技术
1 锁优化 自旋锁:非自旋锁在未获取锁的情况会被阻塞,之后再唤醒尝试获得锁。而JDK的阻塞和唤醒是基于操作系统实现的,会有系统资源的开销。自旋锁就是线程不停地循环尝试获得锁,而不会将自己阻塞,这样不会浪费系统的资源开销,但是会浪费CPU的资源。所有现在的JDK都的是先自旋等待,如果自旋等待一段时间之后还没有获取到锁,就会将当前线程阻塞。原创 2016-05-13 20:42:53 · 5162 阅读 · 0 评论 -
AQS(AbstractQueuedSynchronizer)源码分析
AbstractQueudSynchronizer(AQS)是道格李java并发编程的基础,内部主要包括Node和ConditionObject两个内部类,基于Node节点构建了一个FIFO队列,用来存储等待锁的线程的队列。基于ConditionObject节点也构造了一个FIFO队列,用于存储因为某种原因已经获取到锁而又主动释放锁的线程的队列。在concurrent包下面的大部分的工具类都是以他为基础,包括CountDownLatch,Lock,ReadWriteLock,Semaphare,条件队列….原创 2016-06-07 09:45:19 · 682 阅读 · 0 评论