我从几个URL解析一些东西,然后在数据库中插入数据。我现在想并行执行此操作。我创建一个线程池并在单独的线程中运行链接。但这并不安全。我决定从网络获取数据并将其保存到数据库的同步方法,如下所示:

            synchronized (this) {
                Parser parser = new Parser(link);
                feeds = parser.parse();
                model.insertFeeds(feeds, link);
            }


但是这种方法阻止了其他线程访问Web和数据库,直到当前线程解析数据并插入(这是他的工作的99%)为止,因此似乎它们在执行一项以上的任务,而不是并行执行。

您能告诉我什么是更好的解决方案吗?

最佳答案

您应该让数据库为您处理并发性,以及通过JDBC transaction isolation levels进行控制的方式

09-27 05:41
查看更多