trylock抛出异常,注意unlock的
时间: 2023-11-12 15:06:57 浏览: 56
引用中提到了在使用ReentrantLock时,如果在lock.lock()之前发生了异常,那么在解锁时就会抛出异常。为了避免这种情况发生,需要先判断锁是否被当前线程持有,再进行解锁操作。所以正确的解法是先调用lock.isHeldByCurrentThread()方法来判断锁是否被当前线程持有,再进行解锁操作。另外,还可以在try-catch语句中使用布尔类型的值来接收lock.tryLock()的返回值,如果返回值为true,则说明锁已经被当前线程获得,可以进行解锁操作。
在例子2中,使用了ReentrantLock的tryLock()方法,如果获取锁的过程中发生了异常,就需要在finally块中进行解锁操作。同样,为了避免解锁时抛出异常,可以先判断锁是否被当前线程持有,再进行解锁操作。所以正确的解法是先调用lock.isHeldByCurrentThread()方法来判断锁是否被当前线程持有,再进行解锁操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [如何安全地使用 Lock 的unlock() 而不会抛出异常导致程序终止](https://blog.csdn.net/w8y56f/article/details/115608666)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)