大致是说不能在一个线程开启的锁不能在另外一个线程里释放。
检查了一下是因为try代码块把加锁的地方也包进去了
,大致是这样:
try { lock.lock(); // ...锁资源 } catch (Exception e) { // ... } finally { lock.unlock(); }
加锁拿到try外面即可
lock.lock(); try { // ...锁资源 } catch (Exception e) { // ... } finally { lock.unlock(); }
因为try代码块执行得时候还没有上锁,所以也无法释放。。。还是要细心啊!
Bug记录-执行lock.unlock()出现java.lang.IllegalMonitorStateException
最新推荐文章于 2024-04-27 14:40:15 发布