【发布时间】:2014-09-04 19:55:05
【问题描述】:
我正在学习 Spring Framework,它非常棒。
我想使用 JAVA 多线程,但不知道如何使用 Spring Framework。
服务代码如下:
//StudentService.java
public List<Grade> loadGradesForAllStudents(Date date) {
try{
List<Grade> grades = new ArrayList<Grade>();
List<Student> students = loadCurrentStudents(); // LOAD FROM THE DB
for(Student student : students) { // I WANT TO USE MULTITHREAD FOR THIS PART
// LOAD FROM DB (MANY JOINS)
History studentHistory = loadStudentHistory(student.getStudentId(), date);
// CALCULATION PART
Grade calculatedGrade = calcStudentGrade(studentHistory, date);
grades.add(calculatedGrade);
}
return grades;
} catch(Exception e) {
...
return null;
}
}
如果没有多线程,它会很慢。
我猜 for 循环会导致速度变慢,但我不知道如何解决这个问题。如果给我一个有用的链接或示例代码,我将不胜感激。
我发现 loadStudentHistory 方法与 calcStudentGrade(大约 30 毫秒)相比相当慢(大约 300 毫秒)。
【问题讨论】:
-
你有什么理由想通过春天来做这件事吗?这可以在没有 Spring 的情况下完成
-
您的瓶颈在查询中。同时执行更多查询不会解决您的问题,但可能会使问题变得更糟。此外,这与 Spring 无关。
标签: java multithreading spring spring-mvc asynchronous