123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package cn.cslg.pas.service.importPatent;
- import cn.cslg.pas.common.vo.ImportTaskAMVO;
- import cn.cslg.pas.domain.es.Patent;
- import cn.cslg.pas.service.common.FileManagerService;
- import org.springframework.beans.factory.annotation.Autowired;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.concurrent.locks.Condition;
- import java.util.concurrent.locks.Lock;
- import java.util.concurrent.locks.ReentrantLock;
- public class SavePatentToEsThread extends Thread {
- private List<Patent> patents = new ArrayList<>();
- private final Lock taskLock = new ReentrantLock();
- private final Condition taskCondition = taskLock.newCondition();
- private TaskThread taskThread;
- private Boolean ifProductAll= false;
- @Override
- public void run() {
- while (!ifProductAll||patents.size()>0) {
- try {
- //判断任务队列是否有任务,若没有则线程等待唤醒
- if (patents.size() == 0) {
- taskLock.lock();
- taskCondition.await();
- }
- Thread.sleep(7000);
- Patent patent= patents.remove(0);
- System.out.println("patent"+patent.getPatentNo()+"done");
- } catch (Exception e) {
- }
- }
- taskThread.awakeTaskThread();
- }
- public SavePatentToEsThread(TaskThread taskThread) {
- this.taskThread=taskThread;
- }
- public void awakeTask(Patent patent) {
- patents.add(patent);
- if (taskLock.tryLock()) {
- //taskLock.lock();
- taskCondition.signalAll();
- taskLock.unlock();
- }
- }
- public void setIfProductAll(Boolean ifProductAll){
- this.ifProductAll=ifProductAll;
- }
- }
|