1. 程式人生 > >java ReentrantLock小坑

java ReentrantLock小坑

reentrantlock小坑

ReentrantLock有個lockInterruptibly方法,該方法可被中斷並拋異常,一般如果在finally裏寫unlock的話,在unlock時要加上判斷isHeldByCurrentThread(),因為很可能unlock的線程不是lock的線程,會拋異常,進一步因為lockInterruptibly被中斷時該線程並沒有獲得鎖,然而finally裏的unlock會執行,這時那個線程沒有鎖卻要釋放,會拋異常

java ReentrantLock小坑