SavePatentToEsThread.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package cn.cslg.pas.service.importPatent;
  2. import cn.cslg.pas.common.vo.ImportTaskAMVO;
  3. import cn.cslg.pas.domain.es.Patent;
  4. import cn.cslg.pas.service.common.FileManagerService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import java.io.IOException;
  7. import java.util.ArrayList;
  8. import java.util.Arrays;
  9. import java.util.List;
  10. import java.util.concurrent.locks.Condition;
  11. import java.util.concurrent.locks.Lock;
  12. import java.util.concurrent.locks.ReentrantLock;
  13. public class SavePatentToEsThread extends Thread {
  14. private List<Patent> patents = new ArrayList<>();
  15. private final Lock taskLock = new ReentrantLock();
  16. private final Condition taskCondition = taskLock.newCondition();
  17. private TaskThread taskThread;
  18. private Boolean ifProductAll= false;
  19. @Override
  20. public void run() {
  21. while (!ifProductAll||patents.size()>0) {
  22. try {
  23. //判断任务队列是否有任务,若没有则线程等待唤醒
  24. if (patents.size() == 0) {
  25. taskLock.lock();
  26. taskCondition.await();
  27. }
  28. Thread.sleep(7000);
  29. Patent patent= patents.remove(0);
  30. System.out.println("patent"+patent.getPatentNo()+"done");
  31. } catch (Exception e) {
  32. }
  33. }
  34. taskThread.awakeTaskThread();
  35. }
  36. public SavePatentToEsThread(TaskThread taskThread) {
  37. this.taskThread=taskThread;
  38. }
  39. public void awakeTask(Patent patent) {
  40. patents.add(patent);
  41. if (taskLock.tryLock()) {
  42. //taskLock.lock();
  43. taskCondition.signalAll();
  44. taskLock.unlock();
  45. }
  46. }
  47. public void setIfProductAll(Boolean ifProductAll){
  48. this.ifProductAll=ifProductAll;
  49. }
  50. }