Код медленный из-за доступа к БД.
Во-первых, вы должны проиндексировать свою БД.
Во-вторых, если база данных ваших студентов не очень высокая, я рекомендую вам получить ее в одномСнимок:
List<Student> findStudentByClassNameIn(List<String> classNames);
Затем сопоставьте ваших учеников с вашим классом.
// Map class name with its student
Map<String, List<Student>> stdMap = listStudents().stream().collect(groupingBy(Student::getClassName), toList());
List<StudentsDetails> allStudentsDetails = allClassDetailsDetails.stream()
.parallel()
.map(c -> new StudentDetails(stdMap.get(c.getClassName()))
.collect(toList());
В-третьих, если данные ваших учеников слишком велики, чтобы их можно было сделать за один снимок, то разбейте, чтобы получить, например,30 классов данных одновременно.