zoukankan      html  css  js  c++  java
  • java多线程快速入门(六)

    多线程应用实例(批量发送短信)

    1、创建实体类

    package com.cppdy;
    
    public class UserEntity {
        
        private int id;
        private String name;
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    
    }
    UserEntity

    2、创建工具类

    package com.cppdy;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class ListUtils {
    
        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>> arrayList = 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;
                    }
                }
                arrayList.add(subList);
            }
            return arrayList;
        }
    
    }
    ListUtils

    3、创建实例类

    package com.cppdy;
    
    import java.util.ArrayList;
    import java.util.List;
    
    class sendMsgThread extends Thread{
        
        List<UserEntity> userList;
        public sendMsgThread(List<UserEntity> list) {
            this.userList=list;
        }
        @Override
        public void run() {
            for (int i = 0; i < userList.size(); i++) {
                System.out.println("线程"+this.getId()+"发送短信给"+userList.get(i).getName());
            }
        }
    }
    
    public class Send {
    
        public static void main(String[] args) {
            
            List<List<UserEntity>> splitList = ListUtils.splitList(initUser(), 40);
            for (int i = 0; i < splitList.size(); i++) {
                new sendMsgThread(splitList.get(i)).start();
            }
    
        }
    
        public static List<UserEntity> initUser(){
            ArrayList<UserEntity> userList = new ArrayList<>();
            UserEntity userEntity;
            for (int i = 0; i < 150; i++) {
                userEntity = new UserEntity();
                userEntity.setId(i);
                userEntity.setName("name"+i);
                userList.add(userEntity);
            }
            return userList;
        }
    }
    Send
  • 相关阅读:
    [转][黄忠成]Object Builder Application Block (1)
    C#.NET里面抽象类和接口有什么区别
    MVC中AOP思想的体现(四种过滤器)并结合项目案例说明过滤器的实际用法
    NHibernate之(24):探索NHibernate二级缓存(下)
    使用 ES (elasticsearch) 搜索中文
    elasticsearch 中文 term & completion suggester
    uwsgs loading shared libraries: libicui18n.so.58 异常处理
    tensorflow with gpu 环境配置
    Java 多线程执行
    SpringBoot log4j2 异常
  • 原文地址:https://www.cnblogs.com/jiefu/p/10014304.html
Copyright © 2011-2022 走看看