Tôi có đúng cách duy nhất để ngăn phương thức thực thi hai lần cùng một lúc không bằng cách sử dụng câu lệnh lock
?ngăn phương thức thực thi từ các luồng khác nhau cùng một lúc
private object lockMethod = new object();
public void Method() {
lock (lockMethod) {
// work
}
}
public void FromThread1() {
Method();
}
public void FromThread2() {
Method();
}
Tất nhiên tôi cũng có thể sử dụng MethodImpl(MethodImplOptions.Synchronized)
những gì sẽ gần như giống nhau.
Có các kỹ thuật khác không?
Tôi hơi lo lắng rằng bạn đang cố gắng khóa _method_ thay vì khóa _data_ - bạn đang cố giải quyết vấn đề gì? – sarnold
Vì bạn không hiển thị bất kỳ phương thức 'tĩnh' nào, bạn có thực sự cố ngăn chặn thực hiện một phương thức hai lần cho cùng một cá thể cùng một lúc không? Hoặc bất kỳ hai phương pháp cho một trường hợp duy nhất cùng một lúc? – HABO
phương pháp quá nhỏ đến mức trong tình huống của tôi khóa phương thức = khóa dữ liệu – javapowered