Java 如果当前线程崩溃,readwritelock会发生什么情况

Java 如果当前线程崩溃,readwritelock会发生什么情况,java,multithreading,reentrantreadwritelock,Java,Multithreading,Reentrantreadwritelock,正如标题所说,当当前线程崩溃时,readwritelock会发生什么 readlock.lock(); try { ... } finally { readlock.unlock(); } 我们完全可以在finally block中解锁,以防止任何中断。但是如果readLock.lock()语句崩溃,锁会自动释放吗 谢谢,这取决于“readlock”变量和“线程是如何崩溃的”的实现。据我所知,“readlock”变量可以是任何类型,线程崩溃的方式有多种 仅供参考,每个ja

正如标题所说,当当前线程崩溃时,readwritelock会发生什么

 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,那么会发生什么呢