位置: 建议127: Lock与synchronized是不一样的首先在概念上纠正这一篇内容:援引Java源码中关于ReentrantLock的开篇说明:* A reentrant mutual exclusion {@link Lock} with the same basic* behavior...
分类:
编程语言 时间:
2015-08-17 09:54:41
阅读次数:
149
在上一篇博客中,我们讨论了Race Condition现象以及它产生的原因,现在我们知道它是不好的一种现象了,那么我们有什么方法避免它呢。最直接有效的方式就是放弃多线程,直接改为使用单线程但操作数据,但是这是不优雅的,因为我们知道有时候,多线程有它自己的优势。在这里我们讨论两种其他的方法——锁对象和条件对象。
锁对象
java SE5.0之后为实现多线程的互斥引入了ReentrantLock类...
分类:
编程语言 时间:
2015-08-17 08:48:20
阅读次数:
400
package?wj;
import?java.util.concurrent.locks.Condition;
import?java.util.concurrent.locks.Lock;
import?java.util.concurrent.locks.ReentrantLock;
/**
?*?Created?by?wangjia?.
?*?Date:20...
分类:
其他好文 时间:
2015-08-12 19:59:52
阅读次数:
245
概要接上一篇文章,练习修改锁的公平性,和在所中使用条件。修改锁的公平性ReentrantLock /**
*构造一个锁对象,默认为非公平锁
*/
public ReentrantLock(boolean fair) {
sync = fair ? new FairSync() : new NonfairSync();
}根据Reentrant...
分类:
编程语言 时间:
2015-08-11 23:26:52
阅读次数:
243
public static void main(String[] args){ doSync(); } private static void doSync() { MyThread myThread = new MyThre...
分类:
编程语言 时间:
2015-08-11 23:01:54
阅读次数:
404
synchronized是属于jvm层面的,如果遇到异常,jvm会自动释放锁.lock锁的释放是需要程序员操作,如果不释放就会产生死锁在竞争不激烈的情况下,偶尔会有同步的情况发生,如果用synchronized会好一点,如果竞争很激烈的情况下,使用reentrantLock会好一点.package....
分类:
其他好文 时间:
2015-08-11 22:53:24
阅读次数:
177
案例一:使用多线程完成三个窗口卖票(不能出现重复卖票以及负数票)
卖票程序SellTicket 这里使用Lock类中的方法实现加锁和释放锁!
package cn.itcast.thread2;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public cl...
分类:
编程语言 时间:
2015-08-11 21:33:58
阅读次数:
273
一、我们要打印1到9这9个数字,由A线程先打印1,2,3,然后由B线程打印4,5,6,然后再由A线程打印7,8,9. 这道题有很多种解法,现在我们使用Condition来做这道题(使用Object的wait,notify方法的解法在这里)。 ...
分类:
编程语言 时间:
2015-08-09 14:17:19
阅读次数:
179
原文链接:http://coolxing.iteye.com/blog/1236909两种互斥锁机制:1、synchronized2、ReentrantLockReentrantLock是jdk5的新特性,采用ReentrantLock可以完全替代替换synchronized传统的锁机制,而且采用R...
分类:
编程语言 时间:
2015-07-20 16:10:12
阅读次数:
137
Java中的锁不管是Lock还是synchronized都可以分为互斥锁和非互斥锁。 互斥锁只能被一个线程持有,其他线程只能等待锁的释放。synchronized,ReentrantLock,ReadWriteReentrantLock的WriteLock是互斥的,但ReadLock不是互斥的...
分类:
编程语言 时间:
2015-07-19 13:08:38
阅读次数:
233