是否有一种使用同步方法创建重入锁机制的方法?可以使用同步方法在Java中实现重入锁定机制
由于同步的方法不会让2个线程一起进入临界区,我认为这是不可能的。任何人都可以提供一些见解吗?
假设我将重入属性扩展为Reader-Writer问题,其中多个读者可以锁定同一对象,但Writer锁是独占的。
我们可以使用同步方法实现此功能吗?
是否有一种使用同步方法创建重入锁机制的方法?可以使用同步方法在Java中实现重入锁定机制
由于同步的方法不会让2个线程一起进入临界区,我认为这是不可能的。任何人都可以提供一些见解吗?
假设我将重入属性扩展为Reader-Writer问题,其中多个读者可以锁定同一对象,但Writer锁是独占的。
我们可以使用同步方法实现此功能吗?
不知道我是否理解这个问题,但重入锁是一个锁,当您已经拥有它时可以获得第二次锁(而不是非重入锁,它只会阻止那点)。
Java中的同步块具有以下属性:已经拥有锁的线程可以输入该块。
如果没有这个,就很难编写正确的执行路径,因为你不可能有一个对象的同步方法调用另一个。
在下面的代码
public class Foo {
public synchronized void bar() {
zoop();
}
public synchronized void zoop() {}
}
如果Thread
电话
Foo foo = new Foo();
foo.bar();
你有一个可重入锁,因为这Thread
拥有Foo
对象监视器,然后重新捕获它时,它调用zoop()
内bar()
。
你不清楚你明白什么是'重入'的实际含义。这意味着你可以重新获得你已经拥有的锁而不被阻塞。已具有重入属性。
“重入”一词实际上来自“重入”的含义,因为在另一个“线程”正在处理的同时,另一个“线程”可以重新输入该方法。当我们没有谈论并行/并发执行,而是单核多线程系统时,它实际上已经被使用了。 – Gray
我不认为有任何特殊的需要一个同步的方法来调用另一个。事实上,如果没有发生,这可能是一个好主意。 –
@ TomHawtin-tackline为什么? – EJP