java 线程(三) 互斥和同步
来源:互联网 发布:手机全透明软件 编辑:程序博客网 时间:2024/05/29 17:38
线程的同步
- synchronized(obj){
//括号中的obj就是同步监视器 -
-
... -
- }
- //上述代码的含义就是,线程开始执行同步代码块之前,必须先获得对同步监视器的锁定。通常推荐使用可能被并发访问的共享资源充当同步监视器。
- class
X{ 90 - //定义锁对象
- private
final ReentrantLock newlock= ReentrantLock(); - //...
- //定义需要保证线程安全的方法
- public
void m(){ - //加锁
- lock.lock();
- try{
- //方法体
- //.....
- }finally{
- //解锁
- lock.unlock();
-
} -
} - }
线程通信
- //显式的获得Lock对象
- private
final Lock new()lock= ReentrantLock(); - //获得指定Lock对象的条件变量
- private
final Condition cond=lock.newCondition(); - //.....
- cond.await(); // 是await 而不是 wait
- //.....
- cond.signal(); // 是signal 而不是 notify
- //.....
- cond.signalAll();
读写锁
java.util.concurrent.lock包定义了两个锁类,即ReetrantLock(普通锁) 和 ReetrantReadWriteLock(读写锁).如果需要读线程不用互斥(因为度线程不会改变数据),而写线程需要互斥,则用 ReetrantReadWriteLock很方便。 使用步骤:
1)创建一个 ReetrantReadWriteLock对象
ReetrantReadWriteLock rwl = new ReetrantReadWriteLock();
2)抽取读锁和写锁
private Lock readlock = rwl.readLock();
private Lock writeLock = rwl.writeLock();
3)对所有访问者加读锁
...
readLock.lock();
try{
..
}
finally{
readLock.unlock();
}
4)对所有修改者加写锁
writeLock.lock();
try{
...
}finally{
writeLock.unlock();
}
- java 线程(三) 互斥和同步
- java线程同步和互斥
- java 线程同步互斥和生命周期
- JAVA中线程互斥和同步
- Java线程同步和互斥
- Java线程学习笔记(三)---线程同步互斥
- 线程互斥和同步
- Java线程互斥(三)
- 线程的同步(三)---互斥
- 三线程的互斥与同步
- 线程互斥和同步(二 方式)线程
- 线程基础/线程同步和互斥
- java同步和互斥 : 线程之间通信
- java线程的同步互斥和通讯
- java线程的同步互斥和通讯
- 线程面试题之三:父子线程和子线程之间的同步与互斥
- java同步和互斥
- java同步和互斥
- 移植wince 5.0到2440
- Win7+IIS+PHP+MySql 配置
- iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用
- 大数加法乘法
- 第十七集 常用sql技巧
- java 线程(三) 互斥和同步
- 为什么王兴雷军他们能二次创业成功
- js不支持重载的解决方案
- 哈希表
- 蜗牛—ORACLE基础之学习(一)
- CF Round #240 (Div. 2) C
- LRU Cache 实现
- android的自定义camera竖屏时,摄像头自动旋转90度的解决方案
- iOS多线程编程之NSThread的使用