trong ứng dụng của tôi, tôi phải giải quyết một vấn đề bằng cách thực hiện nhiều nhiệm vụ ràng buộc mạng-io và đôi khi một nhiệm vụ ràng buộc io và được chia thành các nhiệm vụ ràng buộc io nhỏ hơn. Các tác vụ này hiện đang được thực hiện bằng cách sử dụng cơ chế threadpool chuẩn của Java. Tôi tự hỏi liệu tôi có thể chuyển sang khuôn khổ ngã ba và tham gia không? Nhưng câu hỏi đặt ra là, khuôn khổ forkandjoin thường được sử dụng để giải quyết các hoạt động liên kết io hoặc CPU bị ràng buộc? Tôi cho rằng chúng chủ yếu là cho các hoạt động liên kết CPU khiến framework fork-and-join sử dụng kỹ thuật trộm cắp công việc để sử dụng các bộ vi xử lý đa nhân, nhưng nếu tôi sử dụng nó cho các nhiệm vụ liên kết IO, sẽ có bất kỳ tác động bất lợi nào không?Có phải hồ bơi thread fork-and-join của Java là tốt cho việc thực thi nhiệm vụ bị ràng buộc IO không?
Trả lời
Fork-join được thiết kế cho các tác vụ tính toán, vì vậy thông thường tôi sẽ nói không. Fork-join có một API (ManagedBlocker api) để nói cho khung FJ rằng luồng của bạn sẽ bị chặn trong một thời gian và không xếp hàng nhiệm vụ mới nhưng nó thực sự được thiết kế để chờ đợi ngắn (như lấy khóa), không tùy ý lâu chờ IO.
Chúng tôi có hệ thống sử dụng tính năng kết nối ngã ba và chúng tôi thực hiện các tác vụ liên quan đến IO đến một nhóm thực thi riêng biệt. Khi dữ liệu đến, nó kích hoạt các tác vụ vào nhóm kết nối ngã ba sao cho chỉ có công việc ràng buộc CPU xảy ra ở đó.
Nếu bạn đang cố gắng giải quyết khía cạnh "I/O bị ràng buộc" của sự cố, tôi nghi ngờ rằng việc chuyển từ chuỗi chuẩn sang ngã ba và tham gia sẽ cải thiện mọi thứ ... giả sử bạn đã triển khai giải pháp dựa trên luồng hiện tại đúng cách. (Và dựa trên câu trả lời của Alex Miller, việc chuyển đổi có thể thực sự làm mọi thứ trở nên tồi tệ hơn.)
Hoặc cách khác để làm cho ứng dụng I/O bị ràng buộc nhanh hơn là giải quyết các vấn đề xảy ra/O bị ràng buộc ... hoặc tăng băng thông I/O của hệ thống của bạn.
có vẻ như không phải là một lợi thế hấp dẫn để kết nối ngã ba trong trường hợp này.
không có vẻ là một bất lợi đáng kể bởi vì bạn sẽ không lái xe một số tài nguyên quá khó.
tất cả trong tất cả, tôi sẽ ở lại với nhóm chủ đề cho đến khi bạn không có sự phát triển quan trọng nào khác để thực hiện.
- 1. Về tạo thread hoặc hồ bơi thread cho 100 nhiệm vụ
- 2. cách trình xử lý tác vụ của hồ bơi thực thi java với chủ đề bị gián đoạn
- 3. Thực tiễn tốt nhất cho các công việc thực thi Java cho các nhiệm vụ có thể chạy mãi mãi
- 4. Có phải là không trong hồ bơi chết?
- 5. Hồ bơi chủ đề để thực hiện các nhiệm vụ tùy ý với các ưu tiên khác nhau
- 6. làm thế nào để tiêu diệt thread trong java sau khi hoàn thành nhiệm vụ
- 7. Hồ bơi thread Python xử lý các ngoại lệ
- 8. Việc sử dụng gói mặc định của Java có phải là thực tiễn không tốt?
- 9. Thực hiện các tác vụ ràng buộc CPU với các diễn viên Scala?
- 10. «Reply_job» của Rails có thực sự là nhiệm vụ không?
- 11. Là không đồng bộ/await phù hợp cho các phương pháp được cả IO và CPU bị ràng buộc?
- 12. Có phải thực hiện glibc của fprintf() thread-safe không?
- 13. Java có hồ bơi chủ đề nhiều hàng có thể lập chỉ mục không?
- 14. Haskell LLVM ràng buộc Loại mơ hồ
- 15. Hồ bơi chủ đề trong Java
- 16. Làm thế nào để đảm bảo một nhiệm vụ Celery là ngăn chặn thực thi nhiệm vụ Celery chồng chéo
- 17. Làm thế nào để ngăn chặn việc thực thi Executor ThreadPool trong java?
- 18. WPF - Thực hiện hoạt ảnh thực thi có điều kiện trên thuộc tính của mục dữ liệu bị ràng buộc
- 19. Quản lý các nhóm hồ bơi tác nhân ở Clojure
- 20. Java Thread Pools/Executor Service và wait() s - điều gì sẽ xảy ra với chuỗi chủ đề và nhiệm vụ?
- 21. Đây có phải là công việc cho TPL Dataflow không?
- 22. Thực hành tốt nhất trong IIS là gì? Một hồ bơi ứng dụng cho mỗi ứng dụng hoặc một hồ bơi ứng dụng được chia sẻ?
- 23. Mục đích của việc ràng buộc đặt tên là
- 24. Thực thi db: test: chuẩn bị từ một nhiệm vụ rake khác
- 25. "Tự động thuê không có hồ bơi tại chỗ" có nghĩa là gì?
- 26. Có phải là an toàn thread inet_aton của Perl không?
- 27. Thực hành tốt nhất cho giới hạn bộ nhớ trong một hồ bơi ứng dụng IIS
- 28. C++ bị trì hoãn nhiệm vụ
- 29. Sử dụng hồ bơi theo chủ đề trong thực hiện dịch vụ .NET REST
- 30. Việc thực thi handlebars.js trong java có tồn tại không?
"Tốt" theo tiêu chí nào? Những loại I/O nào? Mạng? Đĩa? Console? GUI? Là ngã ba và tham gia thực sự là một 'hồ bơi thread'? – EJP
nhiệm vụ ràng buộc mạng io của nó. – Shamik
câu hỏi sâu sắc; upvoted – necromancer