多线程实现大批量数据导入 (二)

2014-11-24 11:33:08 · 作者: · 浏览: 12
new Test();
// 查询所有的学生信息
List students = test.getAllStudents();
// 定义一个临时集合,用于存放学生信息
List tempStudents = new ArrayList();

for (int i = 0; i < students.size(); i++) {
tempStudents.add(students.get(i));
if (i != 0 && i % 50000 == 0) {
test.createThread4ExportStudentInfo(tempStudents, i);
}
}

test.createThread4ExportStudentInfo(tempStudents, students.size());

}

/**
*
  • 创建线程,导入学生信息

  • *
    * @param tempStudents
    * 每个线程,需要导入的学生信息的数量
    * @param i
    */
    public void createThread4ExportStudentInfo(List tempStudents, int i) {

    List students = new ArrayList();

    for (Student student : tempStudents) {
    students.add(student);
    }

    StudentThread studentThread = new StudentThread(students);
    // 设置线程名称
    studentThread.setName("Thread-" + i);
    // 启动线程
    studentThread.start();

    // 重新生成一个新的临时学生集合。
    tempStudents = new ArrayList();
    }

    /**
    *
  • 查询所有的学生信息

  • *
    * @return
    */
    public List getAllStudents() {

    List students = new ArrayList();

    for (int i = 1; i <= 100000; i++) {
    Student student = new Student();

    student.setName("liudong" + i);
    student.setAge(i);
    student.setSex(i + "");

    students.add(student);
    }

    return students;
    }
    }