Java 在另一个ReentrantReadWriteLock中使用ReentrantReadWriteLock
我不确定我是否正确实现了ReentrantReadWriteLock,因此如果您能让我知道我是否做错了什么,我将不胜感激 情景: 假设制作衬衫需要两个步骤。这些衬衫都是一样的Java 在另一个ReentrantReadWriteLock中使用ReentrantReadWriteLock,java,concurrency,locking,reentrantlock,reentrantreadwritelock,Java,Concurrency,Locking,Reentrantlock,Reentrantreadwritelock,我不确定我是否正确实现了ReentrantReadWriteLock,因此如果您能让我知道我是否做错了什么,我将不胜感激 情景: 假设制作衬衫需要两个步骤。这些衬衫都是一样的 在第一步中,缝纫工具缝制衬衫 在第二步中,纽扣工具从第一步中取出衬衫并将纽扣放在上面。为了简单起见,每件衬衫上只会有一个纽扣 第1步和第2步分别使用10个缝纫工具和10个钮扣工具。按钮放在橱柜的不同架子上 我的目标是确保尽可能多的并发性,同时确保线程不会: 从同一个架子上取下按钮 从同一缝纫工具中取出衬衫 死锁 因此,我对
Lock firstLock = new ReentrantReadWriteLock();
Lock secondLock = new ReentrantReadWriteLock();
if (buttoningTool.ready()) { //check if buttoning-tool is ready
firstLock.writeLock();
if (cupboard.getButton()) { //get button from any available shelf and return true if successful
int shirtNumber = -1;
for (tempSewingTool : allSewingTools) {
if (tempSewingTool.shirtReady()) {
secondLock.writeLock();
shirtNumber = tempSewingTool.takeShirt();
secondLock.unlock();
break;
}
}
if (shirtNumber != 1) {
buttoningTool.activate();
}
}
firstLock.unlock();
}
问题: