如果线程在同步块内抛出异常会发生什么

Mid*_*mal 9 java multithreading

考虑多个线程正在尝试访问关键部分,在一个同步块内发生异常的一个线程会发生什么,它有wait()和notify()来累积和释放锁定.

Pat*_*han 14

同步监视器将被释放:"如果正常或突然完成正文的执行,则会在同一监视器上自动执行解锁操作." Java语言规范17.1.同步.

其他线程将能够继续同步,并调用wait和notify.

如果具有异常的线程持有一些关键程序逻辑资源,则可能需要使用try-finally来确保它被释放.