【发布时间】:2016-09-17 04:42:36
【问题描述】:
我正在为多线程应用程序工作,所以我有一个具有一个全局 ArrayList 变量的线程,我正在从数据库中获取值列表并将其分配给该变量。我已将应获取的列表数量限制为 100。在后端我使用的是休眠。
我让这个线程定期在后台运行,但我想做的是,每当这个线程运行时,它将获取下一个 100 个项目列表。而且我不想使用静态并且不想在数据库中维护它,我很困惑如何维护一个计数器,它将告诉我的获取方法接下来要获取的 100 个项目。谁能帮忙,我怎么能做到这一点?以下是我的代码示例,
public class DemoThread implements Runnable {
private ArrayList <<>> samplePojoList = null;
@Override
public void run() {
MyDaoClass dao = null;
try {
// this dao method fetching list of 100 results from database,
// for each iteration i want to fetch next 100 result from
// database
samplePojoList = dao.getSampleList();
} catch (Exception e) {}
}
}
【问题讨论】:
-
我知道你不想使用静态,但为什么不使用同步的 getInstance 方法创建一个单例呢?
-
@inafalcao 。不 。单例一开始就有很多问题,相关的同步也很困难。通常,最好向构造函数添加参数并传入相关内容。
-
问题 - 你的线程结束了,然后你重新提交它,对吗?不是连续运行吗?您将不得不在某个时刻将一个变量传递给数据库以告知您在哪里停止(好吧,除非您使用游标做某事,但这是一个稍微不同的问题),所以您不妨传递一个参数也给线程。哦,旁注:数据库本身并没有“下一个”或“上一个”的概念,你必须告诉他们你是否/如何订购......
标签: java multithreading hibernate