Tôi có một tiến trình A chứa một bảng trong bộ nhớ với một tập hợp các bản ghi (recordA, recordB, v.v.)
Bây giờ, quá trình này có thể khởi chạy nhiều luồng ảnh hưởng đến các bản ghi và đôi khi chúng ta có thể có 2 luồng đang cố gắng truy cập vào cùng một bản ghi - tình huống này phải bị từ chối. Cụ thể là nếu một bản ghi bị KHÓA bởi một luồng, tôi muốn luồng kia hủy bỏ (tôi không muốn CHẶN hoặc CHỜ).
Hiện tại tôi làm một việc như sau:
synchronized(record)
{
performOperation(record);
}
Nhưng điều này đang gây ra cho tôi vấn đề ... bởi vì trong khi Process1 đang thực hiện hoạt động, nếu Process2 đi kèm với nó sẽ chặn / chờ câu lệnh được đồng bộ hóa và khi Process1 kết thúc, nó sẽ thực hiện hoạt động. Thay vào đó, tôi muốn một cái gì đó như thế này:
if (record is locked)
return;
synchronized(record)
{
performOperation(record);
}
Bất kỳ manh mối nào về cách điều này có thể được thực hiện? Bất kì sự trợ giúp nào đều được đánh giá cao. Cảm ơn,