新起线程任务

来源:互联网 发布:中企动力域名管理 编辑:程序博客网 时间:2024/04/28 03:55
//新起线程清洗            new Thread(new FilterResultThread(filter)).start();              renderJSON(ResultInfo.success(filter,""));
package job;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.persistence.EntityManager;import net.sf.json.JSONObject;import models.FilterResult;import play.Logger;import play.Play;import play.db.jpa.JPA;import play.db.jpa.Transactional;import play.jobs.Every;import play.jobs.Job;import util.Constants;import util.DBHelper;import util.DBUtil;import util.DateUtil;import util.DocUtil;import util.SqlHelper;import util.XString;import com.google.gson.Gson;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;/** * @ClassName: FilterResultJob * @Description: 清洗词 任务 * @author wlj * @date 2016-9-22 下午4:27:29 *  */public class FilterResultThread implements Runnable {    private FilterResult filter;    public FilterResultThread(FilterResult filter) {        this.filter = filter;    }    @Override    @Transactional    public void run() {        if (JPA.local.get() == null) {            EntityManager em = JPA.newEntityManager();            final JPA jpa = new JPA();            jpa.entityManager = em;            JPA.local.set(jpa);        }        String et = filter.createTimeStr;        updateResult(et, filter);        JPA.em().close();    }    static String oldet = "";    public static void updateResult(String et, FilterResult filter) {        JPA.em().getTransaction().begin();        System.out.println(oldet + "****" + et);        HashMap<String, Object> condition = new HashMap<String, Object>();        condition.put("tag", "t" + filter.taskId);        condition.put("et", et);        condition.put("ps", 5000);        condition.put("p", 1);        condition.put("sb", "real_time");        condition.put("so", -1);        condition.put("ch", "0");        condition.put("status", "0");        JSONObject json = DocUtil.getNewForFilter(condition, true, true,                filter.word,filter.userName);        List<Map> result=json.getJSONArray("result");        int num=json.getInt("num");        System.out.println("result.size=="+result.size());        if (result.size() <5000 || oldet == et) {            System.out.println("完成");            String sql="update filter_result set status='完成' where id="+filter.id;            System.out.println(sql);            SqlHelper.updateBySql(sql);            JPA.em().getTransaction().commit();        } else {            oldet = et;            et = result.get(result.size() - 1).get("real_time").toString();            String sql="update filter_result set num=num+"+num+" , do_time='"+et+"' where id="+filter.id;            System.out.println(sql);            SqlHelper.updateBySql(sql);            JPA.em().getTransaction().commit();            updateResult(et, filter);        }    }}
0 0