我很难交互HashMap<String, Future<DPSImporterServiceImpl>>
:
for (Entry<String, Future<DPSImporterServiceImpl>> entry : map.entrySet()) {
logger.debug("Thread: " + entry.getKey() + "/"
+ entry.getValue());
Future<DPSImporterServiceImpl> fut = entry.getValue();
try {
DPSImporterServiceImpl imp = fut.get();
logger.debug("Waiting over for: " + imp.toString());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
我的地图包含两个条目:{1435748953925=java.util.concurrent.FutureTask@705f23aa, 1435748971395=java.util.concurrent.FutureTask@761ea788}
这是我的记录器结果:
Thread: 1435748953925/java.util.concurrent.FutureTask@705f23aa
Waiting over for: Thread busy with 1435748971395.
Thread: 1435748971395/java.util.concurrent.FutureTask@761ea788
Waiting over for: Thread busy with 1435748971395.
正如您所看到的,地图得到了正确的迭代,因为以开头的日志语句Thread...
是地图中的。该get()
方法虽然不能正常工作,因为它显然是从同一个对象调用的(两次都是从带有 key 的第二个条目1435748971395
)。
这让我很困惑,因为地图肯定不包含相同的对象。
你能告诉我这里可能有什么问题吗?谢谢!