gpt4 book ai didi

java - 两个线程查询一个表

转载 作者:行者123 更新时间:2023-11-29 05:25:08 25 4
gpt4 key购买 nike

我有一个大约 1 m 记录的巨大表,我想对所有记录进行一些处理,所以 1 线程方式,会说... 1000 条记录,处理它们,再获取 1000 条记录等...但是如果我想使用多任务处理呢?那是 2 个线程,每个线程获取 1000 条记录并并行处理,我如何确保每个线程将获取不同的 1000 条记录?注意:我正在使用 hibernate

看起来像那样

public void run() {


partList=getKParts(10);
operateOnList(partList);


}

最佳答案

当然,你可以同步代码。

public class MyClass {

private final HibernateFetcher hibernateFetcher = new HibernateFetcher();

private class Worker implements Runnable {
public run() {
List partList = hibernateFetcher.fetchRecords();
operateOnList(partList);
}
}

public void myBatchProcessor() {

while(!hibernateFetcher.isFinished()) {
// create *n* workers and go!

}
}
}

class HibernateFetcher {

private int count = 0;
private final Object lock = new Object();
private volatile boolean isFinished = false;
public List fetchRecords() {

Criteria criteria = ...;

synchronized(lock) {
criteria.setFirstResult(count) // offset
.setMaxResults(1000);
count=count+1000;
}
List result = criteria.list();
isFinished = result.length > 0 ? false: true;
return result;
}

public synchronized boolean isFinished(){
return isFinished;
}

}

关于java - 两个线程查询一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22983099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com