DataBuffer.java 832 B

1234567891011121314151617181920212223242526272829303132333435
  1. package com.malk.tonglibo.utils;
  2. import com.malk.tonglibo.entity.RawDeviceData;
  3. import org.springframework.stereotype.Component;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import java.util.concurrent.BlockingQueue;
  7. import java.util.concurrent.LinkedBlockingQueue;
  8. /**
  9. * 功能:
  10. * 作者:hanxue
  11. * 日期:2025/10/18 0:50
  12. */
  13. @Component
  14. public class DataBuffer {
  15. // 内存队列,缓冲原始数据
  16. private final BlockingQueue<RawDeviceData> queue = new LinkedBlockingQueue<>(10000);
  17. public boolean offer(RawDeviceData data) {
  18. return queue.offer(data);
  19. }
  20. public List<RawDeviceData> drain(int maxSize) {
  21. List<RawDeviceData> list = new ArrayList<>();
  22. queue.drainTo(list, maxSize);
  23. return list;
  24. }
  25. public int size() {
  26. return queue.size();
  27. }
  28. }