/*** 用户实例*/public class User {//用户姓名private String name;//用户idprivate 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;}@Overridepublic String toString() {return "User{" + "name='" + name + '\'' + ", id=" + id + '}';}
}
public class BranchThread {public static void main(String[] args) {//准备数据源List<User> userList = getInitUser();// 定义每个线程处理多少用户Integer count = 20;//根据用户数确定需要多少个线程List<List<User>> lists = splitList(userList, count);//将用户传每个线程执行for (List<User> list:lists) {UserThread userThread=new UserThread(list);Thread thread=new Thread(userThread);//启动线程thread.start();}}/**初始话数据* @return*/public static List<User> getInitUser() {ArrayList<User> list = new ArrayList();for (int i = 0; i < 1000; 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 <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;}}
/*** 创建线程* 给1000个人分批发送短信*/
public class UserThread implements Runnable{private List<User> userList;public UserThread(List<User> userList) {this.userList = userList;}public List<User> getUserList() {return userList;}public void setUserList(List<User> userList) {this.userList = userList;}public void run() {/* userList.forEach(user -> {System.out.println("线程"+Thread.currentThread().getId()+user.toString());});*/for (User user : userList) {//实际项目中调用第三方发送短信的接口System.out.println(new Date().getTime() +"线程"+Thread.currentThread().getId()+user.toString());}}
}

多线程-模拟短信群发相关推荐

  1. 用于模拟短信群发情况的随机数产生

    短信下发时的一些条件 每分钟最高发送量,每分钟最高发送量,每分钟标准发送量,发送总量, 最后在产生每分钟发送量的随机数时还加上了一个波幅值来控制随机数偏向标准量的波动,这样可以模拟出网路情况好和不好时 ...

  2. Discuz论坛短信群发、动网自动发贴源代码

    模拟精灵2005 v6.99 下载地址------------------------------ yhhe.net 下载: http://www.yhhe.net/Fairy_Ape.exe 1he ...

  3. Discuz论坛短信群发、动网自动发贴源代码 1

    打开模拟精灵 ,把下面的代码保存为fap文件,双击运行即可. 或者复制到"源码编辑器"中,点击"编译生成模拟程序"即可. Discuz论坛短信群发源代码 --- ...

  4. [TPYBoard - Micropython] 五分种学会用TPYBoard - GPS 制作短信群发机

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.什么是TPYBoard-GPS TPYBoard-GPS又称TPYBoard ...

  5. 常见的短信群发平台,短信群发平台分类

    目前国内提供短信群发的平台正规的有证的主要有三大基础运营商(联通.电信.移动).工信部批准的第三方短信公司.其他还有第三方短信公司的代理(也称二道贩),下面针对各个平台的特色进行介绍,以供作为短信平台 ...

  6. 关于短信群发的简单实现

    样式: 前台代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

  7. 电力公司SMS短信群发平台的设计与实现

    潍坊科技学院 本科毕业设计(论文) 题 目 电力公司SMS短信群发平台的设计与实现 院(系) 专 业 科学与技术 学 号 学生姓名 指导教师 刘效伟 起讫日期 2015.1.11-2015.6.6 设 ...

  8. 网关短信 群发 为什么卡发短信 群发 贵 ?

    网关短信 群发 为什么卡发短信 群发 贵 ? 首先,要弄清楚什么是卡发短信 ? 什么是网关短信 ? 什么是卡发短信 ? 1 .卡发短信也叫虚拟网关短信,对方收到短信时显示的是我们服务器上的 虚拟手机号 ...

  9. C# 开发winform程序 手机短信群发系统

    手机短信群发作为企业日常通知,公告,天气预报等信息的一个发布平台,在于成本低,操作方便等诸多特点,成为企业通讯之首选.本文介绍短信的编码方式,AT指令以及用C#实现串口通讯的方法. 前言 目前,发送短 ...

最新文章

  1. SpringBoot+WangEditor上传图片
  2. Redis集群Twemproxy
  3. MYSQL 生成UUID() 即 ORACLE 中的guid()函数
  4. 处理字符串_10_对字符串重新按字母排序重新组合
  5. 高可用架构可行性方案
  6. 【EOJ Monthly 2019.02 - E】中位数(二分 ,中位数 ,−1/1变换,dp求解DAG最长路)
  7. 违规停放共享单车 319人被纳入限制骑行“黑名单”
  8. linux——shell脚本开启新终端
  9. 在危机中呈现转机的网络管理
  10. poj 3461 Oulipo kmp 预处理
  11. C中大小写字母转换的问题
  12. 如何修改html数据,怎么修改网页数据
  13. vr视频制作软件哪个好?Nibiru creator是企业的标配
  14. 免费视频文件生成视频二维码的方式详解
  15. 反向题在测试问卷信效度_问卷信度效度检验
  16. 网页中单个页面如何做好SEO优化
  17. Java程序实现繁体字转换简体字
  18. linux 路径 别名,如何创建路径别名
  19. c语言游泳是怎么钓鱼的,不会游泳的钓友进来看 自制饵料钓鲤鱼
  20. 哪款蓝牙耳机性价比最高?几款大热门蓝牙耳机实测

热门文章

  1. AVT51自动视频跟踪器
  2. Winform-TextBox实现 placeholder
  3. css3 placeholder 特效,css3如何设置placeholder的样式
  4. C++知识整理系列(三)—— constexpr常量表达式
  5. 在linux服务器上查询显卡GPU型号
  6. 【论文笔记】FasterNet:Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks
  7. HDU - 6252 Subway Chasing (差分约束)
  8. TypeError: Cannot handle this data type: (1, 1, 28), |u1
  9. ppt转换器免费下载使用教程
  10. Maven scope作用