Có ai có cái nhìn sâu sắc nào về lịch sử của phương thức run() của lớp Java Thread đang được công khai không? Hầu như tất cả thời gian, nó được sử dụng bằng cách ghi đè và do đó công cụ sửa đổi được bảo vệ có phù hợp hơn không? Điều đó vẫn sẽ để lại start() như là api công khai cho người dùng và do đó không để lại bất kỳ chỗ nào cho những sai lầm với người dùng gọi run() vô tình.Lợi ích của công cụ sửa đổi trên Java Thread's run()
Trả lời
Thread
thực hiện Runnable
, xác định phương thức run()
, vì vậy nó phải được công khai.
Nhưng vì Java 1.5 được khuyến khích sử dụng Executors services thay vì java.lang.Thread
. Các công tố viên đang tách đơn vị công việc được thực thi (Runnable
, Callable
) từ người thực thi thực tế. (Với Thread
chúng giống nhau)
run
được định nghĩa trong giao diện Runnable
và tất cả các phương pháp được xác định trong giao diện đều được công khai.
Cảm ơn nhưng tôi cần phải xây dựng một số chi tiết trong câu hỏi của tôi - không Thread thực sự cần phải thực hiện Runnable khi nó làm tất cả các công việc của nó trên mục tiêu Runnable tiêm bên trong nó? – gshx
Bạn tốt hơn là không ghi đè Chủ đề, bạn nên tạo Runnable và chuyển nó vào hàm tạo cho Chủ đề mới. Bằng cách đó, công việc đang được thực hiện, Runnable, được giữ riêng biệt với cơ chế thực thi, Chủ đề.
Nathan, tôi đồng ý với bạn và đó là lý do tại sao tôi tự hỏi tại sao nó lại ở nơi đầu tiên - việc sử dụng Thread runnable khi lớp Thread đã có một constructor chấp nhận một Runnable ghi đè run() – gshx
@gshx : Câu hỏi hay, đoán của tôi là nó được cung cấp như một phím tắt. –
Tôi nghĩ rằng về cơ bản nó là một thiết kế tồi tệ, vì lợi ích của việc làm mọi thứ "đơn giản" cho người dùng, cho phép ghép nối tác vụ được chạy (Runnable
) vào luồng để chạy trực tiếp. Vì Thread
đã được thêm vào trong JDK 1.0, mặc dù, thiết kế đó đã không thể thay đổi kể từ đó, chỉ bị phản đối (loại) ủng hộ khung công tác Executor
. JDK 1.0 đã được một thời gian dài trước đây, và nhiều sai lầm đã được thực hiện mà không có lợi ích của kinh nghiệm kể từ đó.
Tôi thực sự ủng hộ việc bỏ chạy lệnh run() trên Thread với một gợi ý để sử dụng các thực thi thay thế.Rõ ràng là không thể làm cho nó được bảo vệ ngay bây giờ. – gshx
- 1. Lợi ích của nền tảng Java 64bit
- 2. Hiểu lợi ích của Modernizr trên html5shiv
- 3. Công cụ Java để sửa đổi mã kiểm thử
- 4. Lợi ích của x87 trên SSE
- 5. Lợi ích của MVVM trên MVC
- 6. Lợi ích của Struts
- 7. Thay đổi công cụ sửa đổi truy cập của một phương thức ghi đè trong Java?
- 8. Lợi ích của JCA là gì?
- 9. Công cụ Sdk của Android Phiên bản 22 sửa đổi?
- 10. Lợi ích của Class.new trong Rspec
- 11. WPF DataGrid từ bộ công cụ WPF vs ListView - bất kỳ lợi ích nào?
- 12. RejectedExecutionException trong Java Threads
- 13. Lợi ích của Scala là gì?
- 14. Lợi ích của JavaScript Prototype
- 15. Lợi ích của Mẫu Cầu
- 16. Lợi ích chính của MSMQ
- 17. Những lợi ích cụ thể của NServiceBus trên RabbitMQ đơn giản
- 18. Lợi ích của "Không phân đoạn" trên gói TCP?
- 19. Công cụ sửa đổi regex của Perl/m có khớp nhau trên Windows không?
- 20. Làm cách nào và ở đâu để sử dụng công cụ sửa đổi tĩnh trong Java?
- 21. Lợi ích và bất lợi của việc sử dụng java rmi
- 22. Lợi ích của việc chạy Java trên Linux (di chuyển ra khỏi Windows)
- 23. Lợi ích của letrec là gì?
- 24. Lợi ích thực sự của phạm vi
- 25. Công cụ sửa đổi đơn giản tệp tin elf?
- 26. Lợi ích của MVC qua MVP
- 27. Lợi ích của Maven FailSafe Plugin
- 28. LINQ cho công cụ Java
- 29. Công cụ wiki dựa trên Java
- 30. Điều gì sẽ là công cụ sửa đổi đúng?
Vâng, bạn nói đúng và tôi nghĩ đó là lý do tại sao hàm run() nằm trong đó như một phương thức công khai. Trong thực tế, vì có một hàm tạo có một đối số Runnable - Public Thread (mục tiêu Runnable), nên đã phủ nhận sự cần thiết phải thực hiện Runnable? – gshx
"KHÔNG được khuyến khích"? không ngược lại? :-) –
cảm ơn. thêm một 'không' :) bị xóa. – Bozho