【发布时间】:2011-08-25 07:31:28
【问题描述】:
我们公司有一个每天运行的批处理应用程序,它主要做一些与数据库相关的工作,例如从文件中将数据导入数据库表中。
该应用程序中定义了 20 多个任务,每个任务可能依赖于其他任务,也可能不依赖其他任务。 应用一个接一个地执行任务,整个应用运行在一个线程中。
完成所有任务需要 3~7 小时。我觉得它太长了,所以我想也许我可以通过多线程来提高性能。
我认为由于任务之间存在依赖关系,使任务并行运行并不好(或者不容易),但也许我可以使用多线程来提高任务内部的性能。
例如:我们有一个定义为“ImportBizData”的任务,它将数据从数据文件(通常包含 100,0000+ 行)复制到数据库表中。我想知道是否值得使用多线程?
由于我对多线程知之甚少,我希望有人提供一些关于这个主题的教程链接。
【问题讨论】:
-
在此之前,你是不是已经在使用JDBC批量操作了?
-
有些任务使用,有些没有
-
您的直觉是对的,值得研究多线程。我曾经通过完全按照您的想法将八小时的批处理作业转换为 15-20 分钟的作业。
-
我也有同样的情况。但我面临一个数据库表锁定问题,每次执行它时进程都会挂起。你遇到过这样的问题吗?如何解决?
标签: java multithreading jdbc