lock
文章平均质量分 92
muyoufang
这个作者很懒,什么都没留下…
展开
-
java.util.concurrent详解(一) Latch/Barrier
Java1.5提供了一个非常高效实用的多线程包:java.util.concurrent, 提供了大量高级工具,可以帮助开发者编写高效、易维护、结构清晰的Java多线程程序。从这篇blog起,我将跟大家一起共同学习这些新的Java多线程构件1. CountDownLatch 我们先来学习一下JDK1.5 API中关于这个类的详细介绍: “一个同步辅助类,在完成一组正在其他线...原创 2012-10-18 14:30:20 · 90 阅读 · 0 评论 -
多线程下race condition问题
这个问题的讨论来自内部的一个关于“多线程环境下使用Hashmap的安全问题”的讨论,HashMap多线程的问题之前已经提过一次,见之前的blog.本篇文章主要讨论多线程下race condition的问题。以下内容部分引用自内部邮件: 错误代码:定义成员变量private static Map cachedMap = new HashMap(7000);priv...原创 2012-10-11 18:07:51 · 276 阅读 · 0 评论 -
深入理解DCL(双检锁)的安全性
对于双检锁,其实有多种不同的用法,有很多种用法是无论如何不会出现问题的.我最初用双检锁来获取jndi对象时,立即有人告诉我双检锁是不安全的,我笑着告诉他:是否安全我比你更有把握.static DataSource ds = null;public static DataSource getDataSource(){ if(ds == null){...原创 2012-10-11 18:07:14 · 108 阅读 · 0 评论 -
Java轻量级锁原理详解(Lightweight Locking)
大家知道,Java的多线程安全是基于Lock机制实现的,而Lock的性能往往不如人意。原因是,monitorenter与monitorexit这两个控制多线程同步的bytecode原语,是JVM依赖操作系统互斥(mutex)来实现的。互斥是一种会导致线程挂起,并在较短的时间内又需要重新调度回原线程的,较为消耗资源的操作。 为了优化Java的Lock机制,从Java6...原创 2012-10-11 18:06:27 · 77 阅读 · 0 评论 -
Lock和读写锁ReadWriteLock和缓存实例
1:lock和synchronized对比[java] view plaincopyimport java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class...原创 2012-10-22 16:54:56 · 108 阅读 · 0 评论 -
ReentrantLock与synchronized的区别
ReentrantLock 的lock机制有2种,忽略中断锁和响应中断锁,这给我们带来了很大的灵活性。比如:如果A、B2个线程去竞争锁,A线程得到了锁,B线程等待,但是A线程这个时候实在有太多事情要处理,就是 一直不返回,B线程可能就会等不及了,想中断自己,不再等待这个锁了,转而处理其他事情。这个时候ReentrantLock 就提供了2种机制,第一,B线程中断自己(或者别的线程中...原创 2012-10-22 13:33:44 · 99 阅读 · 0 评论 -
java的concurrent/java.util.concurrent.locks用法详解
java.util.concurrent.locks - 内容部份 Lock 接口支持那些语义不同(重入、公平等)的锁定规则,可以在非阻塞式结构的上下文(包括 hand-over-hand 和锁定重排算法)中使用这些规则。主要的实现是 ReentrantLock。 ReadWriteLock 接口以类似方式定义了一些读取者可以共享而写入者独占的锁定。此包只...原创 2012-10-19 15:49:39 · 110 阅读 · 0 评论 -
java.util.concurrent详解(四) BlockingQueue
7.BlockingQueue “支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。“ 这里我们主要讨论BlockingQueue的最典型实现:LinkedBlockingQueue 和ArrayBlockingQueue。两者的不同是底层的数据结构不够,一个是链表,另外一个是数组。 后面将要单独...原创 2012-10-19 10:00:24 · 81 阅读 · 0 评论 -
java.util.concurrent详解(三)ScheduledThreadPoolExecutor
6. ScheduledThreadPoolExecutor 我们先来学习一下JDK1.5 API中关于这个类的详细介绍: "可另行安排在给定的延迟后运行命令,或者定期执行命令。需要多个辅助线程时,或者要求 ThreadPoolExecutor 具有额外的灵活性或功能时,此类要优于 Timer。 一旦启用已延迟的任务就执行它,但是有关何时启用,启用后何时执行则...原创 2012-10-18 14:32:42 · 273 阅读 · 0 评论 -
java.util.concurrent详解(二)Semaphore/FutureTask/Exchanger
----------------------------------------------------------------------------- 3. Semaphore 我们先来学习一下JDK1.5 API中关于这个类的详细介绍: “一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 ...原创 2012-10-18 14:31:39 · 82 阅读 · 0 评论 -
Java偏向锁实现原理(Biased Locking)
阅读本文的读者,需要对Java轻量级锁有一定的了解,知道lock record, mark word之类的名词。可以参考我的一篇博文:Java轻量级锁原理详解(Lightweight Locking) Java偏向锁(Biased Locking)是Java6引入的一项多线程优化。它通过消除资源无竞争情况下的同步原语,进一步提高了程序的运行性能。 轻量级...原创 2012-10-11 18:08:02 · 270 阅读 · 0 评论