Lock
蓝天的IT生涯
这个作者很懒,什么都没留下…
展开
-
ReentrantReadWriteLock 学习
1) 背景 jni的使用场景,多线程读,单线程写,写的时候会更新java对象,当老的java对象无须再使用的时候必须释放jni所占用本地方法区的内存,这个区域的内存不在java heap范畴,因此也无法被垃圾回收掉,需要显式的释放。但问题在于什么释放?有人会说使用finalize,但finalize过于依赖jvm的回收的时机,这使得什么时候能真正释放显得不太好预测。转载 2013-05-17 10:02:15 · 640 阅读 · 0 评论 -
java lock学习笔记
1. ReentrantLock 类实现了Lock,它拥有与Sychronized相同的并发性和内存语义,但是添加了类似锁投票、定时锁等候和可中断锁等候的一些特性。此外,它还提供了在与激烈争用情况下更佳的性能。(换句话说,当许多线程都想访问共享资源时,JVM可以花更少的时间来调度线程,把更多的时间用在执行线程上)。2. ReentrantLock 和 ReentrantRe原创 2013-05-24 19:57:40 · 1256 阅读 · 0 评论 -
Java中常用的锁分析总结
Java中常用的锁分析总结1. ReentrantLock、ReentrantReadWriteLock及Sychronized简介(a) 类继承结构ReentrantLock类继承结构:ReentrantReadWriteLick类继承结构:简述:通过类的继承结构可以看出ReentrantLock 和 ReentrantReadWriteLoc原创 2013-05-24 19:57:09 · 2694 阅读 · 0 评论 -
深入JVM锁机制2-Lock
前文(深入JVM锁机制-synchronized)分析了JVM中的synchronized实现,本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实转载 2013-05-23 14:09:24 · 788 阅读 · 0 评论 -
Java并发中的原子操作包java.util.concurrent.atomic
java.util.concurrent.atomic下支持并发的原子操作Java代码 java.util.concurrent.atomic.AtomicStampedReference; java.util.concurrent.atomic.AtomicInteger; java.util.concurrent.atomic.AtomicBoolea转载 2013-05-22 12:03:23 · 1046 阅读 · 0 评论 -
CLH队列锁
NUMA与SMPSMP(Symmetric Multi-Processor),即对称多处理器结构,指服务器中多个CPU对称工作,每个CPU访问内存地址所需时间相同。其主要特征是共享,包含对CPU,内存,I/O等进行共享。SMP的优点是能够保证内存一致性,缺点是这些共享的资源很可能成为性能瓶颈,随着CPU数量的增加,每个CPU都要访问相同的内存资源,可能导致内存访问冲突,可能会导致CPU资源的浪转载 2013-05-22 20:16:39 · 991 阅读 · 0 评论 -
java里面synchronized用法
在java编程思想中对synchronized的一点解释: 1、synchronized关键字的作用域有二种: 1)是某个对象实例内,synchronized aMethod(){}可以防止多个线程同时访问这个对象的synchronized方法(如果一个对象有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法,其它线程不能同时访问这个对象中任何一个s转载 2013-05-21 14:04:37 · 594 阅读 · 0 评论 -
JAVA并发编程学习笔记之AQS源码分析(获取与释放)
同步状态AQS采用的是CLH队列,CLH队列是由一个一个结点构成的,前面提到结点中有一个状态位,这个状态位与线程状态密切相关,这个状态位(waitStatus)是一个32位的整型常量,它的取值如下:[java] view plaincopyprint?static final int CANCELLED = 1; static转载 2013-05-21 13:54:21 · 825 阅读 · 0 评论 -
JAVA并发编程学习笔记之synchronized
监视器java中同步是通过监视器模型来实现的,JAVA中的监视器实际是一个代码块,这段代码块同一时刻只允许被一个线程执行。线程要想执行这段代码块的唯一方式是获得监视器。监视器有两种同步方式:互斥与协作。多线程环境下线程之间如果需要共享数据,需要解决互斥访问数据的问题,监视器可以确保监视器上的数据在同一时刻只会有一个线程在访问。什么时候需要协作?比如:一个线程向缓冲区写数据,另一个线转载 2013-05-21 13:24:47 · 751 阅读 · 0 评论 -
关于java线程(4)----JUC之 AQS 状态依赖的抽象
JUC之 AQS 状态依赖的抽象AQS全称为:AbstractQueuedSynchronizer,它是juc的synchronizer的基础 状态依赖的管理在JUC中,不管是FutureTask、CountDownLatch、Lock、还是信号量,CyclicBarrier,从某种角度来说,他们都是依赖某种状态,或者说条件,虽然这些条件的值不同:1.FutureTask等转载 2013-05-21 09:32:28 · 827 阅读 · 0 评论 -
Synchronized的简介
记下来,很重要。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问ob转载 2013-05-19 22:03:51 · 690 阅读 · 0 评论 -
JAVA并发编程学习笔记之AQS简介
1、引言JAVA内置的锁(使用同步方法和同步块)一直以来备受关注,其优势是可以花最小的空间开销创建锁(因为每个JAVA对象或者类都可以作为锁使用)和最少的时间开销获得锁(单线程可以在最短时间内获得锁)。线程同步越来越多地被用在多处理器上,特别是在高并发的情况下,然而,JVM内置锁表现一般,而且不支持任何公平策略。从JAVA 5开始在java.util.concurrent包中引入了有别于S转载 2013-05-20 19:55:34 · 878 阅读 · 0 评论 -
ReentrantLock 和 Synchronized对比
多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 —— synchronized 和 volatile 。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是使它转载 2013-05-20 08:51:12 · 2528 阅读 · 2 评论 -
ReentrantLock可重入锁的使用场景
摘要从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些。场景1:如果发现该操作已经在执行中则不再执行(有状态执行)a、用在定时任务时,如果任务执行时间可能超过下次计划执行时间,确保该有状态任务只有一个正在执行,忽略重复触发。b、用在界面交互时点击执行较长时间请求操作时,防止多次点击导致后台重复执行(忽略重复触发)。以上两种情况多用于进转载 2013-05-19 17:20:42 · 1807 阅读 · 0 评论 -
一篇关于ReadWriteLock不错的文章
package concurrent; import java.util.Random; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; import java.ut转载 2013-05-18 13:42:08 · 770 阅读 · 0 评论 -
慎用ReentrantLock
前言:代码简洁与性能高效无法两全其美,本文章专注于并发程序的性能,如果您追求代码简洁,本文章可能不太适合,本文章属于Java Concurrency in Practice读书笔记。在java5中,新增加ReentrantLock提供了一种比synchronized更为灵活的锁机制。为啥说灵活,而不是说性能更高呢?ReentrantLock提供的锁功能跟synchronized的功转载 2013-07-22 09:13:31 · 877 阅读 · 0 评论