Tôi đang nghĩ ở đây: Nếu bạn có 2 luồng thực thi các thao tác FAST cần được đồng bộ hóa, không phải là phương pháp không chặn đứng nhanh hơn/tốt hơn phương pháp chặn/chuyển ngữ cảnh?Chặn khóa so với khóa không chặn
By non-blocking I có nghĩa là một cái gì đó như:
while (true) { if (checkAndGetTheLock()) phá vỡ; }
Điều duy nhất tôi có thể nghĩ đến là đói (với CPU bị đốt cháy) nếu bạn có quá nhiều luồng lặp xung quanh khóa.
Làm cách nào để cân bằng một phương pháp so với phương pháp kia?
Bạn sẽ thực hiện bao nhiêu thao tác khóa cho mỗi lõi CPU mỗi giây? – usr
AFAIK, JVM thực hiện tối ưu hóa này cho bạn nếu không có tranh chấp về khóa (trường hợp đó là nhanh) –
@JB Nizet: Tôi nghĩ bạn phải tự quyết định bằng cách sử dụng đồng bộ hóa so với ReentrantLock. – chrisapotek