浏览 2342 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-08-06
源码中是用ExecutorService,利用java的线程池来执行多个线程,每个线程分别对每个实体建立索引。 在debug的时候,发现如果挨个执行的话,是没有问题的。但如果一起执行的话,就会有问题。具体原因不明,看了一下最新的4.2版的源码,这个地方没变。所以为了能用,我只好采用比较极端的处理办法,把这里多线程并发执行改成挨个执行,效率可想而知会受到影响,不过考虑到只是建立索引的话问题不大,就是不知道会不会影响其他的,目前就是这种处理办法了。 下为源码(未改动) private void doBatchWork() throws InterruptedException { ExecutorService executor = Executors.newFixedThreadPool( rootEntities.length, "BatchIndexingWorkspace" ); for ( Class<?> type : rootEntities ) { executor.execute( new BatchIndexingWorkspace( searchFactoryImplementor, sessionFactory, type, objectLoadingThreads, collectionLoadingThreads, cacheMode, objectLoadingBatchSize, endAllSignal, monitor, backend, objectsLimit ) ); } executor.shutdown(); endAllSignal.await(); //waits for the executor to finish } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |