java:如何同步对数据库的访问?

java:如何同步对数据库的访问?,java,concurrency,Java,Concurrency,我从几个URL解析一些内容,并在数据库中插入数据。我想现在同时做这件事。我创建了一个线程池,并在不同的线程中运行链接。但这并不安全。我决定使用同步方法从web获取数据并将其保存到数据库,如下所示: synchronized (this) { Parser parser = new Parser(link); feeds = parser.parse(); model.inser

我从几个URL解析一些内容,并在数据库中插入数据。我想现在同时做这件事。我创建了一个线程池,并在不同的线程中运行链接。但这并不安全。我决定使用同步方法从web获取数据并将其保存到数据库,如下所示:

            synchronized (this) {
                Parser parser = new Parser(link);
                feeds = parser.parse();
                model.insertFeeds(feeds, link);
            }
但这种方法阻止了其他线程访问web和数据库,直到当前线程解析数据并插入(这是他99%的工作),所以看起来它们是一个接一个地执行的,而不是并行执行的


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

你应该让数据库为你处理并发性,以及通过控制并发性的方法。你应该让数据库为你处理并发性,以及通过控制并发性的方法。我不确定你真正想要实现什么。多个线程同时访问数据库是不安全的,但是当它们按顺序访问数据库时,您会因为数据库不是并行的而感到不安吗?您想要什么访问模式?我将更改这些方法,以便它们可以在不同步的情况下并发运行。请解释您试图防止的冲突。通常,最好在DBMS中使用事务来防止数据冲突谢谢您的关注。我在每个线程中都有一个对象来完成代码显示的所有工作,但现在我在每个线程中创建自己的实例来防止并发。做得好吗?我不确定你到底想达到什么目的。多个线程同时访问数据库是不安全的,但是当它们按顺序访问数据库时,您会因为数据库不是并行的而感到不安吗?您想要什么访问模式?我将更改这些方法,以便它们可以在不同步的情况下并发运行。请解释您试图防止的冲突。通常,最好在DBMS中使用事务来防止数据冲突谢谢您的关注。我在每个线程中都有一个对象来完成代码显示的所有工作,但现在我在每个线程中创建自己的实例来防止并发。好吗?