java多线程查询大量数据写入文件

1.入口

@RequestMapping(value = "/query",method = RequestMethod.GET)
    @ResponseBody
    public String ticketBet() {
        ReadWriteFile.delFile1();
        TransmissionThread tt = new TransmissionThread();
        tt.setDrawId(30);
        tt.setGameId(5);
        Thread t = new Thread(tt);
        t.start();       
        return "success";
    }
2.开启线程

public class TransmissionThread implements Runnable{
    private final Logger logger = Logger.getLogger(TransmissionThread.class);
    private String name;
    Integer game_id;
    Integer draw_id;
    Integer cs=0;
    int j=100;
    private volatile int i=0;
    public void setGameId(Integer game_id) {
        this.game_id = game_id;
    }
    public void setDrawId(Integer draw_id){
        this.draw_id=draw_id;
    }
    public void run() {
        if(cs==0){
        int status=500;
        if(status==500){
            int maxSequenceId=100000;
            String MaxSequenceIdString=String.valueOf(maxSequenceId);
            writeFile(MaxSequenceIdString);
            int count=maxSequenceId;
            int xcs=0;
            if(count==0){
                System.out.println("without more data!");
            }else{
                int ys=count%1000;
                if(ys==0){
                    xcs=count/1000;
                }else{
                    xcs=count/1000+1;
                }
            }
            for (int i = 0; i < xcs; ++i)
            {
                SplitTacketBetThread sb =new SplitTacketBetThread(i);
                sb.setDrawId(1000*i+1000);
                sb.setGameId(1000*i);
                Thread thread =new Thread(sb);
                thread.start();               
            }
        }
    }
}
}
3.业务实现
public class SplitTacketBetThread implements Runnable{
    private final Logger logger = Logger.getLogger(SplitTacketBetThread.class);
    private String name;
    Integer game_id;
    Integer draw_id;
    private int threadId;  
    int ts=1000;
    private volatile int j=100;
    public SplitTacketBetThread(int id)  
    {  
    this.threadId = id;  
    }  
    public void setGameId(Integer game_id)  
    {  
        this.game_id = game_id;  
    }
    public void setDrawId(Integer draw_id){
        this.draw_id=draw_id;
    }
    @Override  
    public synchronized void run()   
    {  
        //inc(game_id, draw_id);
        logger.info("game_id:"+game_id+"..draw_id:"+draw_id);
        JSONObject backJson=new JSONObject();             
        try {
            TmnClpKeySerImpl tmnclpkeyser1 = SpringContextUtil.getBean("tmnClpKeySerImpl");  
            List<TmnClpKey> tckList=tmnclpkeyser1.getTmnClpkeyListByTms(game_id,draw_id);
            logger.info("tckList:"+tckList);
            if(tckList==null||tckList.isEmpty()){
                logger.info("null");
            }else{                  
                backJson.put("list", tckList);
                String result=backJson.toString();
                logger.info("result:"+result);
                ReadWriteFile.writeFile1(result);
            }

        } catch (Exception e) {
            System.out.println("e:"+e);
        }

    }  
    private synchronized void inc(Integer game_id,Integer draw_id) {  
        JSONObject backJson=new JSONObject();             
        try {
            TmnClpKeySerImpl tmnclpkeyser1 = SpringContextUtil.getBean("tmnClpKeySerImpl");  
            List<TmnClpKey> tckList=tmnclpkeyser1.tmnClpkeyList(game_id,draw_id);
            if(tckList==null||tckList.isEmpty()){
                    
             }else{
                 backJson.put("list", tckList);
                 String result=backJson.toString();
                 logger.info("******************************:"+result);
                 ReadWriteFile.writeFile1(result);
                 }
             } catch (Exception e) {
                  System.out.println("e:"+e);
             }
        }
 
}

猜你喜欢

转载自blog.csdn.net/shy415502155/article/details/70912257
今日推荐