Khi làm việc với ConcurrentLinkedQueue, làm thế nào tôi có thể giới hạn kích thước của Hàng đợi. Có thể là nó sẽ thông qua ngoại lệ outofmemory?Ngăn ngừa ConcurrentLinkedQueue <T> từ outofmemory Ngoại lệ
6
A
Trả lời
5
Kích thước của ConcurrentLinkedQueue
là không bị chặn, vì vậy nếu nhà sản xuất đưa vật phẩm nhanh hơn người tiêu dùng có thể loại bỏ chúng, cuối cùng nó sẽ ăn hết bộ nhớ của bạn. Nếu bạn muốn giới hạn kích thước của hàng đợi, hãy thử một hàng đợi chặn, chẳng hạn như LinkedBlockingQueue
hoặc ArrayBlockingQueue
thay thế. Kích thước của đầu tiên có thể được tùy chọn giới hạn, trong khi thứ hai là luôn luôn bị chặn.
0
Tôi hơi trễ một chút, nhưng bạn luôn có thể thiết lập giới hạn trên và khi vượt quá, phương pháp của bạn sẽ tiêu thụ một mã thông báo để nhường chỗ cho thẻ tiếp theo.
Các vấn đề liên quan
- 1. Ngoại lệ OutOfMemory
- 2. Ngoại lệ OutOfMemory khi vẽ hình khối
- 3. Ngăn chặn ngoại lệ
- 4. Làm thế nào để mô phỏng ngoại lệ OutOfMemory
- 5. Ngoại lệ OutOfMemory khi thực thi từ xa bằng Powershell Invoke-Command
- 6. C++ nhận cuộc gọi ngăn xếp từ std :: ngoại lệ
- 7. ngăn ngừa thay đổi hàng trong datagrid
- 8. AppDomain.FirstChanceException và ngoại lệ tràn ngăn xếp
- 9. Ngoại lệ tràn ngăn xếp — tại sao?
- 10. Cách ngăn ngừa ngủ trong Android
- 11. Ngăn ngừa SQL Injection Trong Ibatis
- 12. Ngăn ngừa lật máy ảnh mặt trước
- 13. Dấu vết ngăn xếp ngoại lệ Javascript
- 14. C# ngăn ngừa Bộ sưu tập đã được sửa đổi ngoại trừ
- 15. Ngoại lệ OutOfMemory: Việc nén hình ảnh có làm giảm kích thước heap không?
- 16. LinkedList Vs ConcurrentLinkedQueue
- 17. Json.NET SerializeObject giá trị thoát để ngăn ngừa XSS
- 18. Ngăn ngừa tình cờ nhấp đúp vào một nút
- 19. Tại sao tôi không nhận được số dòng từ ngăn xếp ngăn xếp được tạo từ Ngoại lệ?
- 20. Ngoại lệ từ HRESULT: 0x80131040
- 21. ngoại lệ từ HRESULT: 0x80131047
- 22. cách ngăn ngừa các câu lệnh GC_CONCURRENT trong Logcat
- 23. Ngoại lệ khi thêm mục nhập từ điển
- 24. Giải nén GZIP C# OutOfMemory
- 25. OutOfMemory với Solr4
- 26. Mã trong NSTimer ngăn ngừa ngủ tự động
- 27. Ngăn ngừa mẫu MDI trùng lặp cho trẻ em
- 28. Dấu vết ngăn xếp C++ di động khi ngoại lệ
- 29. C# bắt một ngoại lệ tràn ngăn xếp
- 30. Ngoại lệ không có dấu vết ngăn xếp trong Java
Cảm ơn câu trả lời của bạn, Tuy nhiên tôi đã sử dụng ConcurrentLinkedQueue vì nó đồng thời, Bạn có đề xuất các lớp không đồng bộ sẽ yêu cầu tôi thêm đồng bộ hóa khi truy cập các biến này không? – Youval
@Youval, tất cả các triển khai 'BlockingQueue' đều an toàn theo luồng, như được khai báo trong [tài liệu API] (http://download.oracle.com/javase/6/docs/api/java/util/concurrent/BlockingQueue.html). –
Tuy nhiên việc chặn một chuỗi có thể ảnh hưởng đến hiệu suất ứng dụng tổng thể trong các ứng dụng đồng thời cao. Vì vậy, có khuyết điểm và thuận. –