我正在维护使用ConcurrentHashMap的多线程遗留代码。 在其他方法中有添加和删除操作。在下面的代码中,在从映射中收集了几个值之后,在执行synchronize(value)时抛出了NullPointerException。public class MyClass{
private final Map<MyObj, Map<String, List<String>>> conMap = new ConcurrentHashMap当这
它不是开始和抛出下面的错误-at java.base/java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1011)
at java.base/java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java它是被创建的缺省值</
当我在JDK1.6上阅读ConcurrentHashMap的源代码时,我发现无法访问readValueUnderLock(e),因为put方法检查了值:如果值为null,则必须抛出NullPointerExceptionunlock();}
if (value == null)
throw new NullPointerException
我使用来自ACM package (jtf.acm.org)的GTurtle类。我为GTurtle提供了额外的线程,这是一个GObject。我有一个带有while循环的run方法,用于检查boolean是否为真,如果为真,则执行this.forward()方法。我试着运行游戏并按下按钮,如果它是W或D,GTurtle对象中的布尔值发生变化,线程执行操作。然后我得到了这个异常: at java