欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVA模擬多線程給多用戶發(fā)送短信

 更新時(shí)間:2019年12月20日 11:27:51   作者:求知若渴的蝸牛  
這篇文章主要介紹了JAVA模擬多線程給多用戶發(fā)送短信,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了JAVA模擬多線程給多用戶發(fā)送短信,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

代碼編寫(xiě)邏輯,假設(shè)需要給11個(gè)用戶發(fā)送短信,每一個(gè)線程給兩個(gè)用戶發(fā)送短信,實(shí)現(xiàn)多線程的并發(fā)處理

創(chuàng)建實(shí)體user

package www.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 +
        '}';
  }
}

業(yè)務(wù)代碼

package www.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) {
    //準(zhǔn)備數(shù)據(jù)源
    List<User> userList = getInitUser();
    //定義每個(gè)線程處理多少用戶
    Integer count = 2;
    //根據(jù)用戶數(shù)確定需要多少個(gè)線程
    List<List<User>> lists = splitList(userList, count);
    //將用戶傳每個(gè)線程執(zhí)行
    for (List<User> list:lists) {
      UserThread userThread=new UserThread(list);
      Thread thread=new Thread(userThread);
      //啟動(dòng)線程
      thread.start();
    }



  }

  /**
   * 初始話數(shù)據(jù)
   * @return
   */
  public static List<User> getInitUser() {
    ArrayList<User> 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;
  }

  /**
   * 計(jì)算出需要多少個(gè)線程
   * @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;
  }
}

創(chuàng)建線程

package www.it.com.test;

import java.util.List;

/**
 * @author wangjie
 * @date 2019/11/20 17:03
 * @description 給11個(gè)人分批發(fā)送短信
 * @company 石文軟件有限公司
 */
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;
  }

  @Override
  public void run() {
    userList.forEach(user -> {
      System.out.println("線程"+Thread.currentThread().getId()+user.toString());
    });
    
    //調(diào)用第三方發(fā)送短信的接口
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JDK集合源碼之解析TreeMap(二)

    JDK集合源碼之解析TreeMap(二)

    下面小編就為大家?guī)?lái)一篇淺談java中的TreeMap 排序與TreeSet 排序。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-07-07
  • mybatis的if判斷integer問(wèn)題

    mybatis的if判斷integer問(wèn)題

    這篇文章主要介紹了mybatis的if判斷integer問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • springboot中的多個(gè)application文件講解

    springboot中的多個(gè)application文件講解

    這篇文章主要介紹了springboot中的多個(gè)application文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 有關(guān)Java常見(jiàn)的誤解小結(jié)(來(lái)看一看)

    有關(guān)Java常見(jiàn)的誤解小結(jié)(來(lái)看一看)

    下面小編就為大家?guī)?lái)一篇有關(guān)Java常見(jiàn)的誤解小結(jié)(來(lái)看一看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • 理解zookeeper選舉機(jī)制

    理解zookeeper選舉機(jī)制

    本文主要介紹了zookeeper選舉機(jī)制的相關(guān)知識(shí),具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • Java基礎(chǔ)之代理原理與用法詳解

    Java基礎(chǔ)之代理原理與用法詳解

    這篇文章主要介紹了Java基礎(chǔ)之代理原理與用法,結(jié)合實(shí)例形式詳細(xì)分析了java代理的概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • Java 替換字符串右側(cè)出現(xiàn)的第一個(gè)子串方式

    Java 替換字符串右側(cè)出現(xiàn)的第一個(gè)子串方式

    這篇文章主要介紹了Java 替換字符串右側(cè)出現(xiàn)的第一個(gè)子串方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java中的Apache?Commons?Math使用詳解

    Java中的Apache?Commons?Math使用詳解

    Java中的Apache?Commons?Math是一個(gè)開(kāi)源的數(shù)學(xué)庫(kù),它提供了許多常用的數(shù)學(xué)函數(shù)和算法,這個(gè)庫(kù)對(duì)于需要處理大量數(shù)據(jù)的開(kāi)發(fā)者來(lái)說(shuō)非常有用,因?yàn)樗梢源蟠蠛?jiǎn)化代碼并提高效率,本文給大家詳解講解Java中的Apache?Commons?Math知識(shí),感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • java虛擬機(jī)參數(shù)-D、-X和-XX的區(qū)別小結(jié)

    java虛擬機(jī)參數(shù)-D、-X和-XX的區(qū)別小結(jié)

    本文主要介紹了java虛擬機(jī)參數(shù)-D、-X和-XX的區(qū)別小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • java格式化時(shí)間示例

    java格式化時(shí)間示例

    這篇文章主要介紹了java格式化時(shí)間示例,需要的朋友可以參考下
    2014-04-04

最新評(píng)論