// parallel processing
int processors = Runtime.getRuntime().availableProcessors();
ExecutorService executorService = Executors.newFixedThreadPool(threads);
final List<String> albumIds2 = new ArrayList<String>();
long start2 = System.nanoTime();
for (final HColumn<String, String> column : result.get().getColumns()) {
Runnable worker = new Runnable() {
@Override
public void run() {
albumIds2.add(column.getName());
}
};
executorService.execute(worker);
}
long timeTaken2 = System.nanoTime() - start2;
我有类似上面示例的代码,它创建了一个List<String>
专辑 ID。该列是 cassandra 数据库的一个切片。我记录了创建整个专辑列表所花费的时间。
我使用下面的增强型 for 循环也做了同样的事情。
QueryResult<ColumnSlice<String, String>> result = CassandraDAO.getRowColumns(AlbumIds_CF, customerId);
long start = System.nanoTime();
for (HColumn<String, String> column : result.get().getColumns()) {
albumIds.add(column.getName());
}
long timeTaken = System.nanoTime() - start;
我注意到无论专辑数量有多少,for each 循环总是需要更短的时间才能完成。我做错了吗?还是我需要一台具有多核的计算机。我对并行计算的整个概念真的很陌生,如果我的问题很愚蠢,请原谅我。