1.初始化数据
将数据存入集合
//将所有用户数据存入集合 List<userEntity>
static private List<userEntity> initUser(){
List<userEntity> list = new ArrayList<userEntity>();
for (int i=0; i<36;i++){
list.add(new userEntity("userId:"+i,"userName:"+i));
}
return list;
}
2.定义每个线程分批发送大小
int userCount = 2;
3.计算线程要分配的数据
用分页插件分割数据
分页工具类
public class ListUtils {
/**
* @returnType:@param list 切割集合
* @returnType:@param pageSize 分页长度
* @returnType:@return List<List<T>> 返回分页数据
*/
static public <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;
}
}
List<List<userEntity>> sqlitList = ListUtils.splitList(initUser,userCount);
for (int i=0; i<sqlitList.size();i++){
List<userEntity> list = sqlitList.get(i);
}
//每一个List<userEntity> list 中有userCount个对象
4.分配发送
class UserSendThread implements Runnable{
private List<userEntity> listUser;
public UserSendThread(List<userEntity> listUser){
this.listUser=listUser;
}
@Override
public void run() {
for (userEntity userentity :listUser) {
System.out.println("线程:"+Thread.currentThread().getName()+userentity.toString());
}
}
}
//线程循环处理数据
创建线程
List<List<userEntity>> sqlitList = ListUtils.splitList(initUser,userCount);
for (int i=0; i<sqlitList.size();i++){
List<userEntity> list = sqlitList.get(i);
UserSendThread t1 = new UserSendThread(list);
// 4.分配发送
Thread thread = new Thread(t1,"线程:"+i);
thread.start();
System.out.println("----");
}