我想对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);
}
}
因此数组列表我想成为线程安全的,我该如何管理呢?