Producer.java 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package J20250804.demo02;
  2. import java.io.BufferedReader;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileReader;
  5. import java.io.IOException;
  6. import java.util.concurrent.BlockingQueue;
  7. import java.util.concurrent.LinkedBlockingQueue;
  8. /**
  9. * @author WanJl
  10. * @version 1.0
  11. * @title Producer
  12. * @description
  13. * @create 2025/8/4
  14. */
  15. public class Producer implements Runnable{
  16. private String inputFile;
  17. private BlockingQueue<String> queue;
  18. public Producer(String inputFile, BlockingQueue<String> queue) {
  19. this.inputFile = inputFile;
  20. this.queue=queue;
  21. }
  22. @Override
  23. public void run() {
  24. try(BufferedReader br=new BufferedReader(new FileReader(inputFile))) {
  25. String line;
  26. //读取文件的每一行并且放入到队列中
  27. while ((line=br.readLine())!=null){
  28. try{
  29. //如果队列满了,会阻塞等待
  30. queue.put(line.trim());
  31. }catch (InterruptedException e) {
  32. Thread.currentThread().interrupt();
  33. return;
  34. }
  35. }
  36. } catch (IOException e) {
  37. Thread.currentThread().interrupt();
  38. }
  39. }
  40. }