在没有java同步的情况下访问db数据时避免竞争条件?

时间:2017-11-07 11:11:41

标签: java multithreading concurrency synchronization race-condition

List<String> Codes= req.getCodes();
List<String> existingCodes = helper.getExistingCodes(Codes);
Codes.removeAll(existingCodes);
for (String Code : Codes)
{
  addCode(Code);
}

我收到的请求包含要插入数据库中的不同代码&#34;代码&#34;列表,但同时我必须检查没有重复,所以我从现有代码&#34;中获取DB中的现有代码。然后只是删除了复制并在DB中添加了带有函数addCode()的新代码,现在问题是当多个线程将访问此时 我为每个线程传递相同的代码。 线程1得到一个现有的代码null并转向添加一个新的代码,但在该线程2再次获得现有的代码再次为null之前,它将再次添加相同的代码,这里问题来了。

我写了&#34;合并到&#34;查询添加代码但是它没有使用任何其他解决方案而不使用java中的synchronized ???

0 个答案:

没有答案