Java 如果当前线程崩溃,readwritelock会发生什么情况
正如标题所说,当当前线程崩溃时,readwritelock会发生什么Java 如果当前线程崩溃,readwritelock会发生什么情况,java,multithreading,reentrantreadwritelock,Java,Multithreading,Reentrantreadwritelock,正如标题所说,当当前线程崩溃时,readwritelock会发生什么 readlock.lock(); try { ... } finally { readlock.unlock(); } 我们完全可以在finally block中解锁,以防止任何中断。但是如果readLock.lock()语句崩溃,锁会自动释放吗 谢谢,这取决于“readlock”变量和“线程是如何崩溃的”的实现。据我所知,“readlock”变量可以是任何类型,线程崩溃的方式有多种 仅供参考,每个ja
readlock.lock();
try {
...
} finally {
readlock.unlock();
}
我们完全可以在finally block中解锁,以防止任何中断。但是如果readLock.lock()语句崩溃,锁会自动释放吗
谢谢,这取决于“readlock”变量和“线程是如何崩溃的”的实现。据我所知,“readlock”变量可以是任何类型,线程崩溃的方式有多种
仅供参考,每个java对象都有一个“监视器”。如果您需要同步多个线程对共享变量的访问,我建议您花一些时间阅读java教程的这一章:这取决于您对“readlock”变量和“线程是如何崩溃的”的实现。据我所知,“readlock”变量可以是任何类型,线程崩溃的方式有多种
仅供参考,每个java对象都有一个“监视器”。如果您需要同步多个线程对共享变量的访问,我建议您花一些时间学习java教程的这一章:如果您参考
java.util.concurrent.locks.ReentrantReadWriteLock
类,那么在readlock.lock()
之后线程崩溃(readlock.unlock()
未被调用)将不会释放读取锁定
但写锁的情况不同。写锁定义所有者,并且只能由获取它的线程释放。相反,读锁没有所有权概念,并且不要求释放读锁的线程与获取读锁的线程相同
我建议将
readlock.lock()
放在try finally语句中。如果您指的是java.util.concurrent.locks.ReentrantReadWriteLock
类,则在readlock.lock()
之后线程崩溃(readlock.unlock()
未被调用)不会释放读锁
但写锁的情况不同。写锁定义所有者,并且只能由获取它的线程释放。相反,读锁没有所有权概念,并且不要求释放读锁的线程与获取读锁的线程相同
我建议将readlock.lock()
放在try-finally语句中。- 如果
抛出异常readlock.lock
- 锁定操作失败
- 未获取任何锁
- 不需要
解锁
readlock.lock
期间引发运行时异常,则仍将获取锁<代码>锁定作者错误地实现了它。您可以为作者提交错误报告:)- 如果
抛出异常readlock.lock
- 锁定操作失败
- 未获取任何锁
- 不需要
解锁
如果在
readlock.lock
期间引发运行时异常,则仍将获取锁<代码>锁定作者错误地实现了它。您可以为作者提交一份bug报告:)Java中没有单个线程“崩溃”的概念或能力。实际上,它不会。但是如果一个实现在调用readLock.lock()时抛出RuntimeException,那么可能发生的事情Java中没有单个线程“崩溃”的概念或能力。实际上,它并没有。但是,如果在调用readLock.lock()时实现可能抛出RuntimeException,那么会发生什么呢