本月博客排行
-
第1名
龙儿筝 -
第2名
johnsmith9th -
第3名
wy_19921005 - zysnba
- sgqt
- lemonhandsome
年度博客排行
-
第1名
宏天软件 -
第2名
青否云后端云 -
第3名
龙儿筝 - gashero
- wallimn
- vipbooks
- benladeng5225
- wy_19921005
- fantaxy025025
- e_e
- zysnba
- ssydxa219
- sam123456gz
- javashop
- arpenker
- tanling8334
- kaizi1992
- xpenxpen
- wiseboyloves
- xiangjie88
- ranbuijj
- ganxueyun
- sichunli_030
- xyuma
- wangchen.ily
- jh108020
- lemonhandsome
- zxq_2017
- jbosscn
- Xeden
- luxurioust
- lzyfn123
- zhanjia
- johnsmith9th
- forestqqqq
- ajinn
- nychen2000
- wjianwei666
- hanbaohong
- daizj
- 喧嚣求静
- silverend
- mwhgJava
- kingwell.leng
- lchb139128
- lich0079
- kristy_yy
- jveqi
- java-007
- sunj
最新文章列表
java.util.concurrent详解(四) BlockingQueue
7.BlockingQueue
“支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。“
这里我们主要讨论BlockingQueue的最典型实现:LinkedBlockingQueue 和ArrayBlockingQueue。两者的不同是底层的数据结构不够,一个是链表,另外一个是数组。
后面将要单独解 ...
java.util.concurrent详解(三)ScheduledThreadPoolExecutor
6. ScheduledThreadPoolExecutor
我们先来学习一下JDK1.5 API中关于这个类的详细介绍:
"可另行安排在给定的延迟后运行命令,或者定期执行命令。需要多个辅助线程时,或者要求 ThreadPoolExecutor 具有额外的灵活性或功能时,此类要优于 Timer。
一旦启用已延迟的任务就执行它,但是有关何时启用,启用后何 ...
java.util.concurrent详解(二)Semaphore/FutureTask/Exchanger
-----------------------------------------------------------------------------
3. Semaphore
我们先来学习一下JDK1.5 API中关于这个类的详细介绍:
“一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个
...
java.util.concurrent详解(一) Latch/Barrier
Java1.5提供了一个非常高效实用的多线程包:java.util.concurrent, 提供了大量高级工具,可以帮助开发者编写高效、易维护、结构清晰的Java多线程程序。从这篇blog起,我将跟大家一起共同学习这些新的Java多线程构件
1. CountDownLatch
我们先来学习一下JDK1.5 API中关于这个类的详细介绍:
“一个同步辅助类,在完成一组正在其他线程 ...
Java偏向锁实现原理(Biased Locking)
阅读本文的读者,需要对Java轻量级锁有一定的了解,知道lock record, mark word之类的名词。可以参考我的一篇博文:Java轻量级锁原理详解(Lightweight Locking)
Java偏向锁(Biased Locking)是Java6引入的一项多线程优化。它通过消除资源无竞争情况下的同步原语,进一步提高了程序的运行性能。
轻量级锁 ...
多线程下race condition问题
这个问题的讨论来自内部的一个关于“多线程环境下使用Hashmap的安全问题”的讨论,HashMap多线程的问题之前已经提过一次,见之前的blog
.本篇文章主要讨论多线程下race condition的问题。以下内容部分引用自内部邮件:
错误代码:
定义成员变量
private
static
Map cachedMap = new
HashMap(7000);
priva ...
深入理解DCL(双检锁)的安全性
对于双检锁,其实有多种不同的用法,有很多种用法是无论如何不会出现问题的.我最初用双检锁来获取jndi对象时,立即有人告诉我双检锁是不安全的,我笑着告诉他:是否安全我比你更有把握.
static
DataSource ds = null;
public
static
DataSource getDataSource(){
if
(ds == null){
...
Java轻量级锁原理详解(Lightweight Locking)
大家知道,Java的多线程安全是基于Lock机制实现的,而Lock的性能往往不如人意。原因是,monitorenter与
monitorexit这两个控制多线程同步的bytecode原语,是JVM ...
MySQL 中 QueryCache 的锁模型
有同学在问 MySQL中 QueryCache(QC)的锁是 “全局锁”还是 “表锁”。这里简要说明一下。
1、 QC基本概念
这个是实现在MySQL层(非引擎层)的一个内存结构,基本规则是将满足一定条件的查询结果缓存在内存中,若同样的查询再执行第二次,而且缓存没有失效,则可以直接返回查询结果,无需到引擎获取数据。
几个说明:
a) QC的结构是hash,k ...
并发笔记-----------使用显示的Lock对象
java机制中除了用synchronized关键字来做同步一外。
还可以用java.util.concurrent.lock包中的类
Lock lock=new ReentrantLock()来代替synchronized同步锁
区别是:
使用synchronized 失败会抛出异常。
而使用Lock后可以finally{}讲系统维护在正确的状态
Lock对象必须被显示的创建,锁定和释放 ...
提交svn时报告attempted to lock an already-locked dir
用subeclipse插件提交代码到svn时报告attempted to lock an already-locked dir。
解决方法:
到工程所在目录->.svn,找到lock文件并删除。
这个lock文件时怎么产生的?
内置锁和显式锁的区别--JCIP C13读书笔记
[本文是我对Java Concurrency In Practice C13的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ]
任何java对象都可以用作同步的锁, 为了 ...
JDK6运行时性能优化
Synchronized性能优化:
粗化锁区域:通过扩大已存在锁,减少unlock和re-lock操作,降低所开销;默认启用,启用参数:-XX:+EliminateLocks
同步削减:通过逃逸分析,削减线程局部变量上的锁;启用参数:-XX:+DoEscapeAnalysis
偏袒锁机制:延长创建锁机制线程上锁的租约,知道有其他线程竞争锁时才释放(个人理解:相当于延长锁时间,减少释放、获取锁 ...
Java中锁的应用之-ReadWriteLock
上面我们用儿子和父亲做了一个例子,儿子太猖狂了,花钱根本没有谱。
下面我们再做一个例子,讲解ReadWriteLock的使用,例子和刚才差不多,但是又多了一个角色母亲,而且父母只负责监督,不再存钱。
儿子每三秒都会去花钱一次,而父母每秒都在监督这个卡的使用情况。
所有 ReadWriteLock 实现都必须保证 writeLock 操作的内存同步效果也要保持与相关 readLock ...