2

在尝试使用 Java 的 ReentrantReadWriteLock() 使数据结构(类)线程安全时,我偶然发现了这两种方法。

lock() - 非中断模式: 我们在非中断模式下获取锁,这意味着即使队列中等待的线程被中断或取消驻留,它也会简单地重试获取锁。这继续,导致线程的阻塞和解除阻塞,直到它获得锁。

lockInterruptibly() - 可中断模式: 在这种情况下,如果正在等待的线程被其他线程中断,它将导致 InterruptedException,因此不会有任何重试。

现在我的问题是:

  1. 当我希望我的线程可中断时,我必须使用 lockInterruptibly() 吗?
  2. 除了可以以某种方式处理 InterruptedException 这一事实之外,为什么使用 lockInterruptibly() (优点)是有意义的?
  3. 在性能等方面使我的线程可中断是否有益?

感谢您的帮助:)

[主要来源:https://www.javarticles.com/2016/06/java-reentrantlock-interruption-example.html]

4

0 回答 0