1
我定義的映射是這樣的:爲什麼ConcurrentHashMap put()返回null,但項目放置成功?
private Map<Integer, MyTask> taskMap = new ConcurrentHashMap<Integer, MyTask>();
調用(taskMap爲空即可)把一個任務將返回null,並且記錄器調用將拋出空指針異常是由於addedTask.getTaskNameId()在下面打電話
MyTask addedTask = taskMap.put(task.getId(), task);
logger.logTask("added task", "TaskMgmtMgr::registerTask()", "added task=" + addedTask.getTaskNameId());
但我可以驗證任務是把在成功地與這些陳述上面記錄電話後,立即:
private String getAvailableTaskListStr()
{
Collection<MyTask> tasks = taskMap.values();
if (tasks.isEmpty())
{
return "No running task";
}
String nameList = "";
int index = 0;
for (MyTask task : tasks)
{
if (index == 0)
{
nameList += task;
}
else
{
nameList += ", task";
}
index++;
}
return "TotalTasks in TaskMap is " + index + ": " + nameList;
}
我很困惑。任何人都可以向我解釋這一點?我正在使用JDK 1.8.0_20。
所以,我怎麼能檢查put()是否成功?總是成功? – 5YrsLaterDBA 2014-11-25 04:07:28