1.创建分页工具类
package com.thread.utils;
import java.util.ArrayList;
import java.util.List;
public class PageUtil {
/**
* 分页
*
* @param list 切割数据集合
* @param pageSize 每页记录数
* @param <T>
* @return
*/
public static<T> List<List<T>>splitList(List<T> list, int pageSize){
int listSize=list.size();
int page=(listSize+(pageSize-1))/pageSize;
List<List<T>>listArray=new ArrayList<List<T>>();
for(int i=0;i<page; i++){
List<T> subList=new ArrayList<T>();
for(int j=0;j<listSize; j++){
int pageIndex=((j+1)+(pageSize-1))/pageSize;
if(pageIndex==(i+1)){
subList.add(list.get(j));
}
if((j+1)==((j+1)*pageSize)){
break;
}
}
listArray.add(subList);
}
return listArray;
}
}
2.创建自动化用例实体类:
package com.thread.utils;
public class CaseEntity {
private String case_id;
private String case_context;
public String getCase_id() {
return case_id;
}
public void setCase_id(String case_id) {
this.case_id = case_id;
}
public String getCase_context() {
return case_context;
}
public void setCase_context(String case_context) {
this.case_context = case_context;
}
@Override
public String toString() {
return "CaseEntity{" +
"case_id='" + case_id + '\'' +
", case_context='" + case_context + '\'' +
'}';
}
}
3.创建一个多线程类:
package com.thread.utils;
import com.jdbc.utils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
public class TestThread implements Runnable {
private List<CaseEntity> caseEntityList;
public TestThread(List<CaseEntity> userEntityList) {
this.caseEntityList = userEntityList;
}
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
@Override
public void run() {
for (CaseEntity caseEntity : caseEntityList) {
String case_id = caseEntity.getCase_id();
String new_case_context = Thread.currentThread().getName() + case_id;
String sql = "update tst_pdf_auto_case set case_context=? where case_id=?";
template.update(sql, new_case_context, case_id);
}
}
}
4.创建主线程执行类:
package com.thread.utils;
import com.jdbc.utils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class BatchThread {
public static void main(String[] args) {
List<CaseEntity> userList = initUser();
//自定义按1000来进行分页
int userCount = 100000;
List<List<CaseEntity>> pageList = PageUtil.splitList(userList, userCount);
for (int i = 0; i < pageList.size(); i++) {
List<CaseEntity> caseEntityList = pageList.get(i);
TestThread testThread = new TestThread(caseEntityList);
Thread thread = new Thread(testThread);
thread.start();
}
}
public static List<CaseEntity> initUser() {
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
List<CaseEntity> caseEntityList = new ArrayList<CaseEntity>();
String sql = "select * from tst_pdf_auto_case ";
List<Map<String, Object>> maps = template.queryForList(sql);
for (Map<String, Object> map : maps) {
String case_id = (String) map.get("case_id");
String case_context = (String) map.get("case_context");
CaseEntity caseEntity = new CaseEntity();
caseEntity.setCase_id(case_id);
caseEntity.setCase_context(case_context);
caseEntityList.add(caseEntity);
}
return caseEntityList;
}
}