我对多线程相当陌生并尝试过应用它,但我有点卡住了。java中的multithreaing - drools和数据库
这里是场景: 使用drools将规则应用于从db读取的一组对象,然后将更新后的值写回db。
现在,我重复上述过程多次,所以我想运行的读数+在一个线程(主线程),并在另一写入的部分流口水的过程。
所以我写了下面的代码:
Thread thread = new Thread(new Runnable()
{ public void run()
{
try
{
//writing the updated data in DB
aggregationDAO.updateCaseDetailsInOracle(queryList);
}
catch (Exception e) { throw new RuntimeException();
}
}
});
thread.start();
但是,我在这里停留。
首先,它希望我queryList
是决赛。
我不能让它最终在同一个变量,每次新更新的数据负载堂妹。
其次,
甚至让我的程序运行多线程,有我在运行时没有改善之后。
可以,有人告诉我哪里出错了吗?
所以,如果我把queryList作为final,那么我如何用下一个周期发布的新数据填充它? – ItachiUchiha
感谢您的快速回复! 但lemme解释我的情况多一点.. 我有一个列表发送到数据库和数据地图列表读取,现在因为这个数据非常大,我必须将这个读取过程分成部分(以避免溢出),在每个部分我应用规则和一些数据被更新,并且这个数据将被更新到数据库。 现在,我的申请规则和更新db需要最长的时间,所以我正在考虑平行运行这两个步骤! – ItachiUchiha
@abhinay您应该考虑如何在某些部分分离数据,然后创建可运行的任务,将数据部分传递给该任务并在threadPool中运行它们。您可以使固定的线程池,一次提交所有任务,并且不会溢出,因为同时只有固定数量的正在运行的任务。你可以使用这个创建固定的线程池大小:Executors.newFixedThreadPool(i) – kornero