Да кажем, че имаме общ сериен номер и слушаме входящи байтове. Да кажем, че скоростта на писане е повече от скоростта на четене и за да не губим байтове от серийния номер, въвеждаме буфер и правим следващото. Сериен слушател просто поставя байтове в буфер (нишка за запис на буфер) и четец на буфер, за да извлече байтове от буфер (нишка за четене на буфер) и да анализира данни.
Колко ефективно е използването на java 1.5 ConcurrentLinkedQueue<Integer>
, като се вземе предвид боксирането и разопаковането при превключване между примитивни int incomingByte
от серийни и Queue<Integer>
?
Ограничения:
- няма ограничения за размера на буфера
Знам, че често се използва буфер с фиксиран размер като int[] buffer[BUFFER_SIZE]
, но бих искал да нямам ограничения за ограничаване на буфера.
- безопасен за нишка
По-добре е да имате безопасност на нишките предварително и да не синхронизирате нишките ръчно, като използвате блокиращ буфер или нещо подобно.