gpt4 book ai didi

java - 打印 IntegerList - NullPointerException(线程)

转载 作者:行者123 更新时间:2023-12-02 01:41:47 25 4
gpt4 key购买 nike

我正在编写一个相当复杂的代码,我想在其中包含线程。为了更好地理解,我稍微玩了一下线程,得到了 NullPointerException我不知道为什么它在那里:

这是我的主要方法和使用的两个类:

public static void main (String args[]) {

listInteger list = new listInteger();

for(int i = 0; i < 10; i++) {
list.add(i);
}
printList printy = new printList(list);
Thread no1 = new Thread(printy);
Thread no2 = new Thread(printy);
no1.start();
no2.start();
}
public class printList implements Runnable {

public listInteger list;

public printList(listInteger list) {
this.list = list;
}

@Override
public void run() {
while(list.size() > 0) {
System.out.println(list.getFirst());
list.removeFirst();
}
}
}
public class listInteger {
public LinkedList<Integer> list;

public Integer getFirst() {
return list.getFirst();
}

public void removeFirst() {
list.removeFirst();
}

public int size() {
return list.size();
}

public void add(Integer e) {
list.add(e);
}
}

我以为它只会打印出数字。我想看看线程何时终止,并使用同步来查看输出的差异。该列表应该向我显示线程正在做什么,但我什至没有到达这一点。什么时候指向null?我对 .add() 做错了什么吗?(我现在正在研究我的实际代码很多小时。如果它很明显,请原谅我,我只是没有看到它。)

最佳答案

问题出在你的 listInteger 类中。

public LinkedList<Integer> list;

永远不会初始化,因此每次与它交互时都会出现 NullPointerException。这基本上可以解决你的问题。

public LinkedList<Integer> list = new LinkedList<>();

此外,您使用列表的方式也被破坏了。我建议您阅读有关 java 并发、Java 内存模型等方面的内容。

此外,阅读有关 Java 命名约定的内容对您也很有帮助。

关于java - 打印 IntegerList - NullPointerException(线程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54381405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com