2回复
1年前
读写锁获取锁时出现java.lang.InterruptedException
异常如下:
java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireNanos(AbstractQueuedSynchronizer.java:1245)
at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.tryLock(ReentrantReadWriteLock.java:1115)
没有其他代码显式的对线程进行interrput()调用,这种情况是如何产生的?观察gc日志,在异常出现的时间点有过young gc。gc算法使用的是G1。
怀疑点:gc时触发STW,导致业务线程被中断。
疑问:是否有证据能够直接证明猜测?
2523 阅读
这个跟gc应该没有关系,肯定还是你获取锁的这个线程被主动interrupt了,不一定是业务代码,可能是rpc框架之类的干的,比如dubbo就会有超时中断worker线程的操作,这个需要具体看是什么框架处理的