Scala không sử dụng các thư viện cốt lõi của Java, điều này mang đến tất cả các vấn đề về luồng và khóa từ Java sang Scala?
Vâng, vâng, và nếu bạn khóa trong Scala, bạn sẽ phải đối mặt với những vấn đề tương tự. Tuy nhiên, vấn đề là bạn không được phép, vì Scala cung cấp cho bạn những thứ trừu tượng xử lý vấn đề này một cách an toàn hơn.
Bây giờ, Scala làm hai điều thực sự có ích. Một trong số đó là mô hình diễn viên, có thể được coi là một mô hình tương tranh, được Scala cung cấp như một thư viện. Nếu bạn là một lập trình viên Java, tôi khuyên bạn nên truy cập trang web Akka và xem công cụ Java của họ. Đây là thư viện sẽ thay thế thư viện diễn viên hiện tại của Scala và bạn có thể sử dụng nó từ Java.
Điều thứ hai mà Scala thực hiện đó là sử dụng các cấu trúc dữ liệu bất biến. Không có gì ngăn cản Java sử dụng các cấu trúc dữ liệu bất biến - String
, đối với một, chính nó là bất biến! Các cấu trúc dữ liệu không thay đổi không gặp phải vấn đề tương tranh do các luồng không thể thay đổi chúng.
Có những thứ khác thêm vào những thứ này, để tạo nên các giải pháp đầy đủ, chẳng hạn như các tác nhân và stm (cả hai đều có sẵn từ Akka) hoặc chốt (từ Java).
Bây giờ, hai điều trên có thể được thực hiện bằng Java, như tôi đã nói. Bạn có thể sử dụng Akka trong Java và bạn có thể viết các cấu trúc dữ liệu bất biến trong Java (hoặc sử dụng từ các thư viện cung cấp chúng). Tuy nhiên, Java khiến việc sử dụng công cụ này trở nên khó khăn, bởi vì nó không hỗ trợ các loại bậc cao hơn, cũng không phải đóng và các hàm hạng nhất.
Vì vậy, trong khi bạn có thể làm điều đó, các lập trình viên thường sẽ không bởi vì, trong Java, việc viết mã như vậy rất dài dòng (ý tôi là, nhiều hơn so với tiêu chuẩn cho Java).