首页 > 解决方案 > 处理结果集时出现死锁

问题描述

我正在处理在结果集中提取的大约 300k 条记录。

ResultSetMetaData md = resultSet.getMetaData();
List<Map<String, String>> list = new ArrayList<Map<String, String>>();

    while (resultSet.next()) {
        String prodIda2a2 = "";
        String skuIda2a2 = "";
        String pslIda2a2 = "";
        String sslIda2a2 = "";
        String csIda2a2 = "";
        int dataColumns = md.getColumnCount();
        Map<String, String> row = new ConcurrentHashMap<String, String>();
        for (int i = 1; i <= dataColumns; ++i) {
            String columnName = md.getColumnName(i);
            String value = String.valueOf(resultSet.getObject(i));
            if (columnName.equals("productidA2A2"))
                prodIda2a2 = value;
            else if (columnName.equals("skuidA2A2"))
                skuIda2a2 = value;
            else if (columnName.equals("productseasonlinkidA2A2"))
                pslIda2a2 = value;
            else if (columnName.equals("skuseasonlinkidA2A2"))
                sslIda2a2 = value;
            else if (columnName.equals("skucostsheetidA2A2"))
                csIda2a2 = value;

            row.put(columnName, value);
        }
        list.add(row);

我在以下两行中陷入僵局。

String value = String.valueOf(resultSet.getObject(i));
row.put(columnName, value);

我将不胜感激任何帮助。以下是例外情况:

"RMI TCP Connection(8)-10.13.16.6" Id=30 守护进程prio=5 RUNNABLE Blocked (cnt): 400; 等待(cnt):391 CPU nanos:40859375000;用户纳米:39515625000;分配的字节数:23685333312 方法上下文:q3ixzpr;k5d8myjr;13996;h2ex9v;1; 数据库会话:上下文使用的 1 个 CPU 的 72%:10.185872840911994 (40859375000/401137689800);按上下文分配的字节数:23684723280
at java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1019) at java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1006) at com.integration.common.initialload.loader .pushData(Loader.java:255) 在 com.integration.common.initialload.loader.initloader(Loader.java:71)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method .invoke(Method.java:498) at wt.method.MethodResultWriter.writeExternal(MethodResultWriter.java:165) at wt.method.MethodResult.writeExternal(MethodResult.java:226) at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream. java:1456) 在 java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1430) 在 java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 在 java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 在sun.rmi.server 上的 sun.rmi.server.UnicastRef.marshalValue(UnicastRef.java:290)。UnicastServerRef.dispatch(UnicastServerRef.java:367)
在 sun.rmi.transport.Transport$1.run(Transport.java:200) 在 sun.rmi.transport.Transport$1.run(Transport.java:197) 在 java.security.AccessController.doPrivileged(Native Method) 在 sun .rmi.transport.Transport.serviceCall(Transport.java:196) 在 sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport .java:834) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$46/1748043306.run( Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java :第 1149 章5c5239fa

标签: javacollectionsdeadlock

解决方案


推荐阅读