JAVA模拟多线程给多用户发送短信

网友投稿 450 2022-12-18


JAVA模拟多线程给多用户发送短信

这篇文章主要介绍了java模拟多线程给多用户发送短信,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

代码编写逻辑,假设需要给11个用户发送短信,每一个线程给两个用户发送短信,实现多线程的并发处理

创建实体user

package it.com.test;

/**

* @author wangjie

* @date 2019/11/20 17:10

* @description

* @company 石文软件有限公司

*/

public class User {

private String name;

private Integer id;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public User() {

}

public User(String name, Integer id) {

this.name = name;

this.id = id;

}

@Override

public String toString() {

return "User{" +

"name='" + name + '\'' +

", id=" + id +

'}';

}

}

业务代码

package it.com.test;

import java.util.ArrayList;

import java.util.List;

/**

* @author wangjie

* @date 2019/11/20 17:09

* @description

* @company 石文软件有限公司

*/

public class BranchThread {

public static void main(String[] args) {

//准备数据源

List userList = getInitUser();

//定义每个线程处理多少用户

Integer count = 2;

//根据用户数确定需要多少个线程

List> lists = splitList(userList, count);

//将用户传每个线程执行

for (List list:lists) {

UserThread userThread=new UserThread(list);

Thread thread=new Thread(userThread);

//启动线程

thread.start();

}

}

/**

* 初始话数据

* @return

*/

public static List getInitUser() {

ArrayList list = new ArrayList<>();

for (int i = 0; i < 11; i++) {

User user = new User();

user.setId(i);

String name = String.valueOf(i);

user.setName(name);

list.add(user);

}

return list;

}

/**

* 计算出需要多少个线程

* @param list

* @param pageSize

* @param

* @return

*/

public static List> splitList(List list, int pageSize) {

int listSize = list.size();

int page = (listSize + (pageSize - 1)) / pageSize;

AIjDwBuoJh List> listArray = new ArrayList>();

for (int i = 0; i < page; i++) {

List subList = new ArrayList();

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;

}

}

创建线程

package it.com.test;

import java.util.List;

/*AIjDwBuoJh*

* @author wangjie

* @date 2019/11/20 17:03

* @description 给11个人分批发送短信

* @company 石文软件有限公司

*/

public class UserThread implements Runnable{

private List userList;

public UserThread(List userList) {

this.userList = userList;

}

public List getUserList() {

return userList;

}

public void setUserList(List userList) {

this.userList = userList;

}

@Override

phttp://ublic void run() {

userList.forEach(user -> {

System.out.println("线程"+Thread.currentThread().getId()+user.toString());

});

//调用第三方发送短信的接口

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java实现动态模拟时钟
下一篇:springboot jta atomikos实现分布式事物管理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~