gpt4 book ai didi

Java 锁定 <这有什么问题?>

转载 作者:行者123 更新时间:2023-12-01 10:06:00 28 4
gpt4 key购买 nike

这里的问题是:“这些选择中的哪一个对于线程安全选择的剧院具有最佳性能?”

public static List<Lock> lockList = initializeLocks();
public boolean bookSeat(int seatNumber, int customerID){
lockList.get(seatNumber).lock();
try{
Seat seat = listOfSeats.get(seatNumber);
if(seat.isAvailable()){
seat.setCustomer(customerID);
return true;
} else { return false; }
} // end try
finally { lockList.get(seatNumber).unlock(); }
}

对比

private static List<ReadWriteLock> lockList = initializeLocks();
public boolean bookSeat(int seatNumber, int customerID){
lockList.get(seatNUmber).writeLock().lock;
try{
Seat seat = listOfSeats.get(seatNumber);
if(seat.isAvailable()){
seat.setCustomer(customerID);
return true;
} else { return false; }
} // end try
finally { lockList.get(seatNumber).writeLock().unlock; }
}

非常感谢你们!根据我的理解,两者都有效,但显然从我在学校教授那里收集到的信息来看,选项 2 是正确的,我不明白为什么一个比另一个更好。希望大家能够帮忙!谢谢!

最佳答案

第一个仅使用普通锁,第二个使用写锁。

普通锁 - 独占

一旦拥有锁,其他线程就无法获取另一个锁。因此,这本质上是一个独占锁。

写锁定 - 写入独占

一旦获得写锁,其他线程就无法获取另一个锁,但它们可以获取锁。

读锁 - 与写锁配合

一旦拥有读锁,其他线程就可以获取读锁。但是,在获取读锁的同时,不能获取写锁。

本质上,在读锁和写锁之间,您可以在写时安排独占访问,但如果每个人都只是读,则可以安排所有人自由访问。

Which of these choices will have the best performance for the theater of the thread safe choice?

通常,如果您正在读取和写入,则使用读/写锁定会获得更好的性能。普通锁会阻止所有访问。

关于Java 锁定 <这有什么问题?>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36473569/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com