Thread_跨节点集合查询
项目中数据库进行了水平切分,为了处理跨节点集合查询,采用了多线程并发操作的方式来处理,并且对各线程执行的结果进行操作,如果是返回结果集,则合并排序;如果是聚合操作,则求和。个人觉得该实现方式很有代表性,所以抽取了原型实现备忘。
?
集合处理:
?
import java.util.concurrent.CompletionService;import java.util.concurrent.ExecutorCompletionService;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class FixedConnectionPool {private int cpuCoreNumber = 2;private ExecutorService exec;private CompletionService<Object> completionService;public FixedConnectionPool(){this.cpuCoreNumber = Runtime.getRuntime().availableProcessors();//this.exec = Executors.newCachedThreadPool();this.exec = Executors.newFixedThreadPool(cpuCoreNumber);this.completionService = new ExecutorCompletionService<Object>(exec);}public int getCpuCoreNumber() {return cpuCoreNumber;}public void setCpuCoreNumber(int cpuCoreNumber) {this.cpuCoreNumber = cpuCoreNumber;}public ExecutorService getExec() {return exec;}public void setExec(ExecutorService exec) {this.exec = exec;}public CompletionService<Object> getCompletionService() {return completionService;}public void setCompletionService(CompletionService<Object> completionService) {this.completionService = completionService;}}
?
1 楼 zean 2012-09-19 这个问题很久以前就想过,如果多个节点返回的结果集都很大,怎么排序? 2 楼 charles751 2012-09-19 zean 写道这个问题很久以前就想过,如果多个节点返回的结果集都很大,怎么排序?