Java读写锁问题
来源:互联网 发布:什么是淘宝大促商品 编辑:程序博客网 时间:2024/05/18 13:30
前几天在对HBase Client进行优过程中,需要扩展HTable,需要加一个Timer来对Client buffer进行定时的flush。由于HTable不是线程安全的,所以为扩展的HTable使用了Java ReentrantReadWriteLock来进行读写锁。在不同的方法中加了读锁或者写锁,从而导致了死锁的问题。
看了一下文档,Java的读写锁只能downgrading不能upgrading,导致死锁的问题就是upgrading导致的。
下面是一个锁upgrading导致死锁的例子:
ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); lock.readLock().lock(); try{ System.out.println("Got a read lock"); lock.writeLock().lock();//want to upgrade from read lock to write, here is the deadlock try{ System.out.println("Got a write lock"); } finally { lock.writeLock().unlock(); System.out.println("Unlock a write lock"); } } finally { lock.readLock().unlock(); System.out.println("Unlock a read lock"); }
下面是一个锁downgrading的例子:
ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); lock.writeLock().lock(); try{ System.out.println("Got a write lock"); lock.readLock().lock();//Downgrade from write lock to read lock, it's ok. try{ System.out.println("Got a read lock"); } finally { lock.readLock().unlock(); System.out.println("Unlock a read lock"); } } finally { lock.writeLock().unlock(); System.out.println("Unlock a write lock"); }
- Java读写锁问题
- JAVA多线程之生产者消费者问题&&读写锁问题
- java 读写者问题 实现
- java文件的读写问题
- 读写锁(读写者问题)
- 读写锁实现读写者问题
- Java读写锁
- Java读写锁
- java中的读写锁
- java 线程读写锁
- java 读写锁
- java 读写锁 ReadWriteLock
- java中的读写锁
- java读写锁
- Java多线程--读写锁
- Java读写锁ReadWriteLock
- java读写锁深入
- 深入浅出Java中文问题-文件读写
- ZXing改横屏识别为竖屏识别
- D5100配35 1.5G和50 1.8G哪个更合适些呢?
- iOS学习笔记(四)——iOS应用程序生命周期
- 线段树
- 利用Apache mod_expires 与 mod_headers 实现文件缓存及mod_deflate压缩输出
- Java读写锁问题
- NDK的配置
- (基础知识)单反镜头的参数辨别
- 利用半透明对话框实现新浪微博android客户端首次运行时的提示界面
- poj 2195 Going Home
- CareerCup-4.4
- 1 范例数据库表的建立
- dynamically allocated 2d & 3d array
- 离线安装dotNetFramework3.5SP1