多线程代码

it2022-05-10  69

public void exec(List<CDO> list, String strFbillno, int id,String[][] result) throws InterruptedException{ //每个线程处理300条数据 int count = 300; //数据量 int listSize = list.size(); //开启线程的数量 int runSize = (listSize/count)+1; //存放每个线程执行的数据 List<CDO> newlist = null; //创建线程池,数量就是开启线程的数量 ExecutorService executor = Executors.newFixedThreadPool(runSize); //创建两个计数器 CountDownLatch begin = new CountDownLatch(1); CountDownLatch end = new CountDownLatch(runSize); //循环创建线程 for(int s = 0; s < runSize ; s++){ //计算每个线程执行的数据 if((s+1)==runSize){ int startIndex = (s*count); int endIndex = list.size(); newlist= list.subList(startIndex, endIndex); }else{ int startIndex = (s*count); int endIndex = (s+1)*count; newlist= list.subList(startIndex, endIndex); } //线程类,插入SCM表 MyThread mythead = new MyThread(newlist,begin,end,strFbillno,id); //线程类2,更新分库分表 //执行方法 executor.execute(mythead); //线程2执行方法 } begin.countDown(); end.await(); //执行完关闭线程池 executor.shutdown(); }//视情况使用同步锁synchronized//MyThread 创建此类实现Runnable接口,重写run()方法

  

转载于:https://www.cnblogs.com/hikarilovedaisuke/p/10272196.html


最新回复(0)