多线程中的一些线程安全的ArrayList

时间:2019-05-28 06:12:03

标签: java multithreading hibernate volatile atomicinteger

我想对ArrayList进行操作,但是它应该保留其他线程插入其中的数据。基本上,我的arrayList应该在所有线程之间共享。当我执行检查说arraylist.contains(object)时,如果它已经被其他线程添加,则应该返回true。

在我的情况下,我使用的是hibernate的session.saveOrUpdate(object),一个线程将对象保存到会话中,但是稍后执行提交到db的操作,与此同时,如果另一个线程在db中检查同一对象,是否它返回为null并再次保存,因此在提交后,我将在数据库中看到重复的条目。由于某些设计行为,我无法在数据库级别设置约束,但是我将不得不在代码内部进行处理。

因此,我要将对象保存在threadSafe列表中,以便可以验证对象是否存在于列表中,因此我不应该执行saveOrUpdate()。

object =  this.cntSQL.cmdHome.findByCriteria(object);
if(object==Null){
     if(!arrayList.contains(object)){
                session.saveOrUpdate(object);
                arrayList.add(object);
       }
    }

因此数组列表我想成为线程安全的,我该如何管理呢?

0 个答案:

没有答案