Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate query.uniqueList中的ConcurrentModificationException_Java_Multithreading_Hibernate_Weblogic_Workmanagers - Fatal编程技术网

Java Hibernate query.uniqueList中的ConcurrentModificationException

Java Hibernate query.uniqueList中的ConcurrentModificationException,java,multithreading,hibernate,weblogic,workmanagers,Java,Multithreading,Hibernate,Weblogic,Workmanagers,我正在处理大量数据的性能问题。我正在尝试使用weblogic提供的工作管理器将工作分配到多个线程中。但是,在尝试从表中获取特定记录时,我收到以下异常 Caused by: java.util.ConcurrentModificationException at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:365) at java.util.LinkedHashMap$EntryIt

我正在处理大量数据的性能问题。我正在尝试使用weblogic提供的工作管理器将工作分配到多个线程中。但是,在尝试从表中获取特定记录时,我收到以下异常

Caused by: java.util.ConcurrentModificationException
    at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:365)
    at java.util.LinkedHashMap$EntryIterator.next(LinkedHashMap.java:384)
    at java.util.LinkedHashMap$EntryIterator.next(LinkedHashMap.java:383)
    at org.hibernate.util.IdentityMap.entryArray(IdentityMap.java:228)
    at org.hibernate.util.IdentityMap.concurrentEntries(IdentityMap.java:89)
    at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:136)
    at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:88)
    at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:58)
    at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:1185)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1261)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
    at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:890)
这是因为多线程吗?我使用的hibernate版本是3.6.1。异常是非常随机的:有时它工作得很好,有时在Eclipse中放置调试点就可以做到这一点

*编辑: 引发异常的代码段:

public Dto findRecentRequests()
{
    Dto dto = getHibernateTemplate().executeFind(new HibernateCallback()
    {
        public Object doInHibernate(Session session) throws HibernateException
        {
            Query q = session.createQuery(newQuery);
            q.setMaxResults(1);
            return (Dto) query.uniqueResult();

        }
    });
    return dto;
}

发布引发此异常的相关代码。您的句子
异常非常随机:有时它工作得很好,有时在Eclipse中放置调试点就可以了。
表明这可能是多线程问题。也许您可以使用
ConcurrentHashMap
而不是普通的HashMap,但如果没有相关的代码,这只是在黑暗中拍摄。您无法在单个
会话中使用多个线程。一个会话中加载的数据只能在单个
线程中使用。除非您知道自己在做什么。@BoristheSpider事实上,您可以使用多个线程处理列表中的数据(我以前使用
ExecutorService
)。问题在于执行调用的代码。OP:这是相关代码的一部分。您还必须发布如何使用多线程策略调用此代码。