您的位置:首页 > 编程语言 > Java开发

java中线程同步

2016-02-23 16:54 381 查看
在大多数多线程应用中,经常有两个或两个以上的线程对同一数据存取。从而出现竞争条件。

一、三种机制防止并发代码访问干扰

1、synchronized关键字

java从1.0开始,java中的每个对象都有一个内部锁。如果一个方法用了synchronized,那么要调用这个方法,线程须获得内部的对象锁。

public synchronized void method() {
your code
}
等价于

public void method() {
this.intrinsicLock.lock();
try {
your code
}finally {
this.intrinsicLock.unlock();
}
}


2、ReentrantLock类(即Lock锁)

Lock myLock = new ReentrantLock();
//注:以下部分可放入目标方法内部使用
myLock.lock();
try {
临界区
} finally {
myLock.unlock();
}
这一结构确保任何时刻只有一个线程进入临界区。

一旦一个线程获得了锁对象,其它线程都无法通过lock()语句。

当其它线程调用lock时,它们被阻塞,直到第一个线程释放锁对象。

3、java.util.concurrent包机制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: