Tôi vẫn đang trong quá trình gói bộ não của mình xung quanh cách hoạt động của đồng thời trong Java. Tôi hiểu rằng (nếu bạn đang đăng ký mô hình đồng thời Java 5 OO), bạn triển khai Task
hoặc Callable
với phương thức run()
hoặc call()
(tương ứng) và điều đó cho phép bạn thực hiện song song nhiều phương pháp được triển khai nhất có thể.Đa luồng một tệp lớn đọc
Nhưng tôi vẫn không hiểu cái gì đó cố hữu về lập trình đồng thời trong Java:
- thế nào là một
Task
's phương pháprun()
giao đúng số lượng công việc đồng thời được thực hiện?
Là một ví dụ cụ thể, những gì nếu tôi có một I/O-bound readMobyDick()
phương pháp mà đọc toàn bộ nội dung của Herman Melville Moby Dick vào bộ nhớ từ một tập tin trên hệ thống địa phương. Và chúng ta hãy chỉ nói rằng tôi muốn phương pháp readMobyDick()
này là đồng thời và xử lý bởi 3 chủ đề, trong đó:
- Chủ đề # 1 đọc 1/3 đầu tiên của cuốn sách vào bộ nhớ
- Chủ đề # 2 lần đọc thứ hai 1/3 của cuốn sách vào bộ nhớ
- chủ đề # 3 lần đọc cuối cùng 1/3 của cuốn sách vào bộ nhớ
tôi có cần phải đoạn Moby Dick lên thành ba tập tin và vượt qua chúng từng đến nhiệm vụ của mình hoặc làm II chỉ cần gọi readMobyDick()
từ bên trong imp lemented run()
phương pháp và (bằng cách nào đó) các Executor
biết làm thế nào để phá vỡ công việc trong số các chủ đề.
Tôi là người học rất trực quan, vì vậy bất kỳ ví dụ mã nào về cách tiếp cận phù hợp đều được đánh giá cao! Cảm ơn!
tên phương pháp Tuyệt vời! Khi tôi cố gắng đọc Moby Dick tôi thấy tôi phải làm điều đó đồng thời (xen kẽ với những cuốn sách khác) ;-) –
Vì vậy ... cá voi trắng lớn sẽ là .NET, phải không? –