2011-11-08 33 views
5

Vì vậy, tôi có nhiều bước giai đoạn 1 -> giai đoạn 2 -> giai đoạn 3 -> giai đoạn 4 vì vậy trong một số trường hợp, nhà sản xuất sẽ là người tiêu dùng và ở mỗi giai đoạn là nhiều nhà sản xuất/người tiêu dùng sử dụng nhiều cpus. Trong trường hợp có liên quan một số gói sẽ bỏ lỡ các bước, tức là đi thẳng từ giai đoạn 1 đến giai đoạn 4.Cách tốt nhất để thực hiện nhiều mẫu nhà sản xuất/người tiêu dùng trong Java 6

Vì vậy, tôi sẽ có một lớp cho mỗi giai đoạn, chia sẻ BlockingQueue với giai đoạn trước, nhưng tôi cũng đọc rằng ExecutorService hoạt động giống như một mẫu nhà sản xuất/người tiêu dùng tất cả trong một, vì vậy Im cố gắng để đi với sự trừu tượng tốt nhất.

Tuy nhiên có vẻ như với tôi rằng sử dụng một Executor, bit nhà sản xuất được thực hiện trước khi chúng được gửi đến người thực thi, theo cách tuần tự mà không phải là điều tôi muốn.

Có thể làm rõ bất kỳ ai không?

+0

Tôi nghĩ tốt hơn là bỏ chuỗi và lập lịch trình và sắp xếp thứ tự này cho một số công cụ SOA như trộn dịch vụ apache thay vì thực hiện tùy chỉnh của chúng tôi. Nhưng các điểm kết thúc có thể được gọi là nhiều người tiêu dùng. Tôi nghĩ rằng việc thực hiện thủ công điều này có quá nhiều biến và vấn đề kiểm soát. Chỉ là một ý nghĩ. – r0ast3d

Trả lời

1

Có vẻ như bạn cần một java.util.concurrent.CompletionService cho mỗi giai đoạn, thay vì BlockingQueue.

+0

Vâng, tôi nghĩ rằng kết quả của tôi –

Các vấn đề liên quan