Chúng tôi đang xây dựng một ứng dụng web với Scala, khung chơi và MongoDB (với ReactiveMongo làm trình điều khiển của chúng tôi). Kiến trúc ứng dụng không bị chặn để kết thúc.Sử dụng đồng bộ/khóa trong mã sau
Trong một số phần trong mã của chúng tôi, chúng tôi cần truy cập một số thư viện không an toàn theo chủ đề như bộ phối hợp phân tích cú pháp của Scala, phản xạ của Scala v.v. Chúng tôi hiện đang bao gồm các cuộc gọi như vậy trong khối synchronized
. Tôi có hai câu hỏi:
- Có bất kỳ dấu hiệu nào cần tìm khi sử dụng
synchronized
với mã y trong tương lai không? - Bạn nên sử dụng khóa (chẳng hạn như
ReentrantLock
) thay vìsynchronized
, từ cả quan điểm hiệu suất và khả năng sử dụng?
Tôi gặp khó khăn khi hiểu ý bạn là gì "mã tương lai" – fge
@fge, mã sử dụng nhiều từ 'Future's. Tôi nghĩ điều đó hoàn toàn rõ ràng từ ngữ cảnh (Play, Reactive * etc), nhưng có vẻ như không phải vậy, nên xin lỗi. – missingfaktor
Bạn không nên thực hiện các thao tác chặn với ngữ cảnh thực thi mặc định. [Câu trả lời này] (http://stackoverflow.com/a/16834855/406435) có thể hữu ích. – senia