Có thuật toán nào phải sử dụng một trong số chúng khi thực hiện không?
Hầu như chắc chắn là không. (Trên thực tế, từ góc độ lý thuyết, bạn sẽ có thể chờ đợi mô phỏng / thông báo sử dụng java.util.concurrent khác. . Lớp học. Và đồng bộ có thể được thay thế bằng các hoạt động Khóa rõ ràng ... mặc dù bạn sẽ cần phải cẩn thận để mở khóa trong finally
điều khoản.)
Tuy nhiên, có thể có các thuật toán trong đó việc triển khai thực hiện tốt nhất trong Java liên quan đến việc sử dụng trực tiếp đồng bộ hóa, có hoặc không chờ đợi và thông báo.
Đã đến lúc không đồng bộ, chờ đợi và thông báo?
Bất kể câu trả lời cho câu hỏi trước, câu trả lời chắc chắn là không.
Chờ / thông báo có thể (và thường được) sử dụng đúng. Trong Java, khấu hao được dành riêng cho các lớp và phương thức bị hỏng; tức là nơi tiếp tục sử dụng nên được sửa chữa là một vấn đề cấp bách. Nếu Sun (và bây giờ là Oracle) không chấp nhận một cái gì đó là cơ bản và được sử dụng rộng rãi như chờ đợi / thông báo, thì họ sẽ tạo ra một vấn đề tương thích nghiêm trọng đối với số lượng lớn mã kế thừa. Đó không phải là lợi ích của bất cứ ai.
Nếu bạn muốn loại bỏ đồng bộ hóa / chờ đợi / thông báo trong mã của mình, điều đó là tốt. Nhưng sự phản đối đòi hỏi phải viết lại một lượng lớn mã đa luồng về cơ bản chính xác và đó sẽ là BAD IDEA. Các nhà quản lý CNTT doanh nghiệp và các nhà quản lý sản phẩm phần mềm sẽ ghét bạn vì đã gợi ý nó ...
Thật đáng để đọc "deprecated" nghĩa là gì theo tài liệu Java: http://docs.oracle.com/javase/1.5.0/docs/guide/javadoc/deprecation/deprecation.html
Và cũng lưu ý rằng chúng ta đang nói về những thứ không dùng đến cốt lõi của ngôn ngữ Java. Khấu hao synchronized
có hậu quả rất lớn.