Trong khi tôi đang đọc một bài nghiên cứu về đồng thời có tên Phần mềm và Cuộc cách mạng đồng thời ( phiên bản html ). Tôi đã xem qua các dòng sau:
Thật không may, mặc dù các khóa hoạt động, chúng gây ra các vấn đề nghiêm trọng cho phát triển phần mềm hiện đại. Một vấn đề cơ bản với ổ khóa là chúng không thể ghép lại được . Bạn không thể lấy hai đoạn mã dựa trên khóa chính xác, kết hợp chúng và biết rằng kết quả vẫn đúng. Phát triển phần mềm hiện đại phụ thuộc vào khả năng kết hợp các thư viện thành các chương trình lớn hơn và do đó, một khó khăn nghiêm trọng là chúng ta không thể xây dựng trên các thành phần dựa trên khóa mà không kiểm tra việc triển khai của chúng.
Tôi đã suy nghĩ, làm thế nào Java đảm bảo đồng thời có thể kết hợp hoặc thậm chí có một cách để tạo ra các kịch bản này.
Và làm thế nào chúng ta có thể đồng bộ hóa dữ liệu trong một hoặc nhiều thư viện? Một lập trình viên có thể làm điều đó từ chương trình của mình hoặc tùy thuộc vào thư viện để đồng bộ hóa mọi thứ.
Nếu không phải Java thì có ngôn ngữ nào khác sử dụng đồng thời dựa trên khóa và đảm bảo đồng thời có thể kết hợp được không?
Sau đây cũng được lấy từ cùng một tờ giấy:
Có ít nhất ba vấn đề chính với các phương thức đồng bộ. Đầu tiên, chúng không phù hợp với các loại có phương thức gọi các hàm ảo trên các đối tượng khác (ví dụ: Vector's Vector và .NET's SyncHashTable), bởi vì việc gọi vào mã của bên thứ ba trong khi giữ khóa sẽ mở ra khả năng bế tắc . Thứ hai, các phương thức được đồng bộ hóa có thể thực hiện quá nhiều khóa, bằng cách thu thập và giải phóng các khóa trên tất cả các trường hợp đối tượng, ngay cả những phương thức không bao giờ được chia sẻ qua các luồng (thường là đa số). Thứ ba, các phương thức được đồng bộ hóa cũng có thể thực hiện quá ít khóa, bằng cách không bảo toàn tính nguyên tử khi một chương trình gọi nhiều phương thức trên một đối tượng hoặc trên các đối tượng khác nhau. Như một ví dụ đơn giản về sau, hãy xem xét chuyển khoản ngân hàng: account1.Credit (số tiền); tài khoản2.Debit (số tiền) ...
Lưu ý: Giấy được xuất bản vào tháng 9 năm 2005