这是我的脚本所做的:
它逐行解析拥有2700万行的文档。我拿出每一行,解析它,并将必要的信息插入数据库表(使用JDBC)。
问题是,preparedStatement.executeUpdate()方法不是异步的,所以它一直等到它返回,这就是我的瓶颈所在。解析2700万行需要大约2天时间:(
由于JDBC没有异步支持,我想在一个线程中包装每个executeUpdate()调用。我应该每次创建一个新线程吗?或者我应该使用线程池,我应该如何创建该线程池?
我担心由于线路的解析几乎不需要任何时间,因此在线程池中等待的活动任务数量将超过可用线程的数量,并且它将恢复为线性,瓶颈是任务等待开放的线程。
由于
答案 0 :(得分:2)
put()
行take()
来自BlockingQueue的一行并更新数据库(这是一个基本的生产者/消费者多线程场景)