SavePatentToEsThread.java 2.2 KB

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